Dynamic Dependencies


in the discussion about providing metadata for a package I constantly find the statement, that several people cannot provide a static information about the dependencies, because they are dynamic.

Can someone please explain to me, when this is the case and why this cannot be solved by the currently available method providing environment markers?

Thanks for enlightment :smiley:

fin swimmer

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