[Distutils] PEP 426 (Metadata 2.0) - Requires-Dist and setuptools/distribute

Paul Moore p.f.moore at gmail.com
Mon Mar 4 20:41:44 CET 2013


In thinking about how virtualenv would describe the packages it wants
to preload in PEP 426 metadata form, it occurred to me that there are
scenarios with setuptools and distribute where it's not obvious how to
state the requirement you want. Specifically, if you want to install
setuptools if it is present, but if not fall back to distribute (for
example, if you have a local package repository and no access to PyPI,
but setuptools may or may not be present).

I appreciate this is a fairly obscure case. It comes up with
virtualenv because virtualenv uses locally-available distributions by
default, only going to PyPI if it has to. So in that case (depending
on user options) I could genuinely want to pick whichever of
setuptools or distribute is present, and I don't care which, as it
saves a network lookup.

I'm actually using the distlib locator API, not the PEP 426 fields
themselves, but (a) distlib locators use the same syntax, as far as
I'm aware, and (b) I think the Requires-Dist syntax makes a good
language for specifying distribution requirements in any context, so
I'd hate to end up with 2 slightly-different forms.

If the answer is that the spec doesn't support that, then fine. I'll
have to manually code for it. But I'd hate to write code I didn't need
to :-)

Paul.


More information about the Distutils-SIG mailing list