[Distutils] Request for comment: Proposal to change behaviour of pip install

Nick Coghlan ncoghlan at gmail.com
Sat Jun 25 17:31:19 EDT 2016

On 25 June 2016 at 03:25, Pradyun Gedam <pradyunsg at gmail.com> wrote:
> Hello List!
> There is currently a proposal to change the behaviour to pip install to
> upgrade a package that is passed even if it is already installed.
> This behaviour change is accompanied with a change in the upgrade strategy -
> pip would stop “eagerly” upgrading dependencies and would become more
> conservative, upgrading a dependency only when it doesn’t meet lower
> constraints of the newer version of a parent. Moreover, the behaviour of pip
> install --target would also be changed so that --upgrade no longer affects
> it.
> A PEP-style write-up
> (https://gist.github.com/pradyunsg/4c9db6a212239fee69b429c96cdc3d73)
> documents the reasoning behind this proposed change, what the change is and
> some alternate proposals that were rejected in the discussions.
> This is a request for comments on the pull-request implementing this
> proposal (https://github.com/pypa/pip/pull/3806) for your views, thoughts
> and possible concerns related to it.

Hi Pradyun,

Thanks for putting that together. The assertion in the write-up that
the proposed behaviour matches that of operating system level package
managers doesn't sound right to me:

$ sudo dnf install -q python
Package python-2.7.11-5.fc24.x86_64 is already installed, skipping.

(My system actually has a Python update pending, so the "-q" option is
suppressing the output telling me about that, but either way, it
doesn't make any local changes unless I use the update or upgrade
subcommand or supply the "--best" upgrade strategy option to the
install command)

As far as I am aware, apt-get install behaves the same way - if you
only give a package name, and that package is already installed on the
system, it won't do anything, even if a newer version of that
component is available, and you need to use the "upgrade" subcommand
instead to say "upgrade to the latest available version".

Switching pip's "--upgrade" command line option to a non-eager upgrade
strategy sounds good to me, but making "install" upgrade the requested
component by default when given just a name (rather than a specific
file or URL reference) would be very surprising and problematic.


Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia

More information about the Distutils-SIG mailing list