[Python-Dev] PEP 453 (pip bootstrapping) ready for pronouncement?

Nick Coghlan ncoghlan at gmail.com
Thu Sep 26 06:30:18 CEST 2013

On 26 September 2013 09:08, Barry Warsaw <barry at python.org> wrote:
> On Sep 26, 2013, at 09:01 AM, Nick Coghlan wrote:
>>Would a leading underscore in the module name make you more comfortable
>>with the idea? It's really intended mostly as a hidden implementation
>>detail of the installers and pyvenv anyway, so calling it "_ensurepip"
>>would help make that explicit while still letting people invoke it directly
>>if absolutely necessary.
> If it was also undocumented, and we can guarantee that it will have no impact
> outside of the module itself, then maybe.  I'm not sure it would be enough for
> me to accept it if I were the RM, but I'm not (thankfully. :).
> I still think it's optimistic to pin any hopes on its widespread availability
> in future 2.7 point releases on people's actual systems.

The recommended user experience for 2.7 users on Windows and Mac OS X
will be "Install the latest Python 2.7 from python.org". This feature
is *not* aimed at existing users *at all*. For Python 2.7, the
benefits are aimed almost entirely at beginners installing Python for
the first time, regardless of platform. There's a *side effect* for
existing users, where for Windows and Mac OS X users, the pip
bootstrapping instructions become "install the latest maintenance
release" rather than downloading and running the bootstrap script from

The presence or absence of _ensurepip should be completely irrelevant
to end users, as it will be there in 2.7 solely to make the new
feature of the installer work.

Your alternative proposal is to instead come up with a *new* mechanism
to support the feature, specifically for 2.7. That's increasing the
chance of breakage, not reducing it, *because the _ensurepip tests
would no longer be executed by the Python 2.7 buildbots*.

That said, there are changes that I think are definitely worth making
due to the concerns you raise:

- the module name should be "_ensurepip" in all versions
- the PEP should explicitly state that the "don't remove _ensurepip
and it's wheel files" caveat for redistributors applies only in 3.4+
(where removing it will break pyvenv)

The benefits are most obvious in the case of 2.7, so both Donald and I
are also fine with skipping making any changes to Python 3.3. The kind
of environment that could make it difficult to upgrade from Python
3.3. to 3.4 is unlikely to condone the installation and use of pip

There is one other change which is potentially reasonable, and that's
changing the default state of the "Install pip (the default Python
package management utility)?" checkbox. I believe it should be checked
by default in all versions, but if Benjamin decides that it should be
unchecked by default in 2.7, I'd be willing to go along with that.


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

More information about the Python-Dev mailing list