[Distutils] (How) do setuptools/distribute/pip handle circular dependencies?

Vinay Sajip vinay_sajip at yahoo.co.uk
Sat Nov 10 12:51:56 CET 2012


Carl Meyer <carl <at> oddbird.net> writes:

> already satisfied. In pip this happens here:
> https://github.com/pypa/pip/blob/develop/pip/req.py#L1091
> 
> More generally, I wouldn't really recommend pip's dependency resolution
> logic as a model for new Python code in this area. There are some not
> uncommon cases that it handles poorly; see
> https://github.com/pypa/pip/issues/174 and
> http://bugs.python.org/issue8927. (To be fair to pip, these cases aren't
> trivial when you have to download and unpack an sdist before you can

Thanks for the pointers.

> find out anything about its dependencies, but I'd hope that with the new
> metadata PEPs Python packaging code could get a bit smarter in this area.)

AFAICT, the proposed metadata PEP changes don't offer the same requirement
granularity as setuptools / distribute (for example, 'Requires-Dist' as against
'install_requires', 'setup_requires', 'test_requires').

Anyway, I'll take a look at the issue you mentioned and see how the dependency
code in distlib stacks up. Currently, it keeps the requirements distinct for
'install', 'setup' and 'test'. The distinctions seem reasonable in theory,
though I'm not sure how useful they are in practice.

In the case I was quoting, the circular dependency wasn't being treated as any
kind of conflict - I just came across cycles when testing topological sorting of
dependency graphs, and was curious about them.

Regards,

Vinay Sajip



More information about the Distutils-SIG mailing list