Dynamic Dependencies

The canonical case is scipy, which has an sdist that can depend on a wide range of numpy versions, but once compiled into a wheel has a much more specific requirement.

This situation was replicated often enough in the numerics ecosystem that conda’s big innovation (at the time) was using totally different dependency resolution for compiled packages than sources.

There are also compiler and platform specialisations that are not exposed through environment markers, which may influence the required dependencies (e.g. what GPU support is present).

I proposed selector packages to isolate these kinds of decisions from the package’s requires list, but it seems more likely we’ll just continue supporting dynamic dependencies (or over-installation) and extras, and possibly add new environment markers on a case-by-case basis.

1 Like