[Distutils] Comments on PEP 426

Carl Meyer carl at oddbird.net
Sun Sep 8 00:36:18 CEST 2013


On 09/07/2013 11:33 AM, Vinay Sajip wrote:
> Carl Meyer <carl <at> oddbird.net> writes:
> 
>> Sidenote, and already mentioned by MAL upthread, but --record is a
>> distutils feature, not a setuptools feature, so this is not the reason
>> pip forces setuptools.
>>
>> I think the actual reason is so that pip can have a uniform way to
>> access metadata (including dependency metadata that only setuptools has)
>> by running "setup.py egg-info", which is setuptools-only. (It also means
> 
> But if a distribution uses only distutils, it won't be declaring any
> dependency metadata through install_requires=, setup_requires= etc. or any
> other kwarg recognised only by setuptools - so where would the dependency
> information come from? 

It wouldn't have it, of course. I wasn't implying that it would, just
that the egg-info command gives pip a uniform way to get all the
available metadata from any distribution, without trying to detect what
its setup.py uses.

It seems like the egg_info command is the sole
> reason, or did I miss something?

Also the installation command (not having to detect what the setup.py
uses and decide accordingly whether to supply
--single-version-externally-managed) and the installed format, which I
already mentioned but you snipped in your reply. (Setuptools with
--single-version-externally-managed installs metadata in a .egg-info
dir, plain distutils just installs a single file of metadata, not a
directory; the directory gives pip a place to put the results of --record).

Also there's "setup.py develop"; because of the setuptools-import hack,
pip is able to provide this feature uniformly for all distributions (as
"pip install -e"), not only setuptools-using distributions.

There may be other things pip relies on the setuptools-import hack for
that aren't crossing my mind at the moment.

Carl


More information about the Distutils-SIG mailing list