[Distutils] [Numpy-discussion] Proposal: stop supporting 'setup.py install'; start requiring 'pip install .' instead

Paul Moore p.f.moore at gmail.com
Sun Nov 8 15:52:54 EST 2015

On 8 November 2015 at 17:42, Nathaniel Smith <njs at pobox.com> wrote:
> I'm not sure exactly what's at stake in this terminological/ontological
> debate, but it certainly is fairly common for developers to have
> conversations like "thanks for reporting that issue, I think it's fixed in
> master but can't reproduce myself so can you try 'pip install
> https://github.com/pydata/patsy/archive/master.zip' and report back whether
> it helps?"

Well, reviewing this scenario is probably much more useful than the
endless terminology debates that I seem to be forever starting, so
thanks for stopping me!

It seems to me that in this situation, optimising rebuild times
probably isn't too important. The user is likely to only be building
once or twice, so reusing object files from a previous build isn't
likely to be a killer benefit.

However, if the user does as you asked here, they'd likely be pretty
surprised (and it'd be a nasty situation for you to debug) if pip
didn't install what the user asked. In all honesty, You could argue
that this implies that pip should unconditionally install files
specified on the command line, but I'd suggest that you should
actually be asking the user to run  'pip install --ignore-installed
https://github.com/pydata/patsy/archive/master.zip'. That avoids any
risk that whatever the user has currently installed could mess things
up, and is explicit that it's doing so (and equally, it's explicit
that it'll overwrite the currently installed version, which the user
might not want to do in his main environment).

Maybe you could argue that you want --ignore-installed to be the
default (probably only when a file is specified rather than a
requirement, assuming that distinguishing between a file and a
requirement is practical). But if we did that, we'd still need a
--dont-ignore-installed flag to restore the current behaviour. For
example, because Christoph Gohlke's builds must be manually
downloaded, I find it's quite common to download a wheel from his site
and "pip install" it in a number of environments, with the meaning
"only if it'd be an upgrade to whatever is currently installed".

So this specific example seems to me to be entirely covered by current
pip behaviour.


More information about the Distutils-SIG mailing list