[Distutils] setup.py install using pip

Erik Bray erik.m.bray at gmail.com
Wed Dec 23 12:35:54 EST 2015

On Thu, Dec 10, 2015 at 5:12 PM, Robert Collins
<robertc at robertcollins.net> wrote:
> On 8 December 2015 at 09:14, Erik Bray <erik.m.bray at gmail.com> wrote:
>> On Mon, Dec 7, 2015 at 2:40 PM, Paul Moore <p.f.moore at gmail.com> wrote:
>>> On 7 December 2015 at 18:58, Erik Bray <erik.m.bray at gmail.com> wrote:
>>>> I wasn't able to produce this problem.  Even with --no-binary
>>>> specified pip installs (by default) with
>>>> --single-version-externally-managed.  My prototype implicitly disables
>>>> the --pip flag if --single-version-externally-managed was specified
>>>> (true to the purpose of that flag).
>>> Ah - that was the bit I was missing, the
>>> --single-version-externally-managed flag can be used to trigger
>>> ignoring --pip.
>>>> What *is* a problem is if --pip is in setup.cfg, and one invokes `pip
>>>> install --egg .`.  I wasn't quite able to make that go into an
>>>> infinite loop, but it did invoke pip.main recursively, and stuff broke
>>>> on the second invocation for reasons not clear to me.
>>> Yeah, but honestly I don't think pip install --egg is that important a
>>> use case. I may be wrong (there's lots of ways people use pip that I
>>> know nothing of :-)) but as a starting point it might be OK just to
>>> say that at the same time as the --pip flag was introduced, "pip
>>> install --egg" was deprecated (and we explicitly document that pip
>>> install --egg is known to interact badly with setup.py --pip).
>> I'd be fine with that too.  IIRC pip install --egg was introduced in
>> part to work around problems with namespace packages.  This doesn't
>> completely eliminate the need for that workaround, but it does reduce
>> it.
> Huh? No, my understanding was that it was introduced solely to support
> interop with folk using 'easy-install', and its considered deprecated
> and delete-as-soon-as-practical.

The original issue that motivated it did have to do with (lack of)
interoperability of different ways namespace packages are implemented:


The fact that it introduced general backwards-compat for
easy-install-like installation was a side "benefit", useful I'm sure
to a few people.  But otherwise as you say, was intended to be deleted
as soon as practical.


More information about the Distutils-SIG mailing list