[Distutils] What does it mean for Python to "bundle pip"?
Donald Stufft
donald at stufft.io
Tue Aug 20 00:14:41 CEST 2013
On Aug 19, 2013, at 5:43 PM, Paul Moore <p.f.moore at gmail.com> wrote:
> On 19 August 2013 22:21, Donald Stufft <donald at stufft.io> wrote:
> My current draft explicitly ensures that the end result is the same as if someone installed pip manually. There will be no importable pip from the standard library.
>
> OK, in which case I think you need to explain in the PEP why this is a benefit compared to users just manually installing pip by hand. In particular "why doesn't pip just supply getpip.py for download?"
>
> You also need to address the fact that installing pip (whether by hand or via the bootstrap) on Windows, does not normally make the pip command available (because Python34\Scripts is not on %PATH%). Benefits: install process matches the current one, disadvantages: all user documentation needs to add some level of verbiage about how to add pip to %PATH%.
>
> It also specifically excludes pip from the backwards compat and other governance related issues of CPython.
>
> I agree with this, but I think we should offer some core stability guarantees - even if it's only that "python -m pip install X" will install X... At the moment, the PEP doesn't really offer any tangible benefits for the end user.
The benefit is that the installers will run the bootstrap during the install process, so ``pip`` works out of the box. The typical end user will not be running ``python -m getpip``.
>
> I'm not sure if it's the place of this PEP, but *something* needs to document the reasons why we are even proposing that pip gets bundled with Python. From an end user perspective, the immediate impression is that everything's going to be hugely better, because we'll have a package manager that can install, upgrade, uninstall, etc, built into Python. From there on, however, the picture is one of a series of little disappointments - "I need to explicitly bootstrap. Oh, OK.", "And now I have to set PATH. Yech, but fair enough". "And wait, the interface isn't stable? What?"[1]
As said above they typically won't have to manually bootstrap it. I specifically excludes the PATH stuff from the PEP because in my mind that's a separate issue. I haven't used windows in a long enough time I don't feel qualified to speak on it (And it's not an issue under OSX which is the other installer distributed by Python). However that problem affects all installed distributions with command line scripts on Windows and probably should have a more generic solution.
>
> The various technical issues have started to obscure the original user-facing reasons why we want to do this at all. If we don't document those reasons, we risk ending up with a technical solution that doesn't actually address the original issue. Which would be a shame.
>
> I can understand if Donald feels that the original rationale isn't something he wants to cover (I don't know if he was involved in the discussions - IIRC, they were at PyCon, and I know for example that *I* don't have a clear picture of all the details, as I wasn't there...) Maybe Nick would be better placed to ad a "Why are we doing this?" section.
I have 7 paragraphs of rationale. I"m not sure what additional information should be added to them in order to cover it? Part of what I hope to do before official release is reword things to be a bit more clear.
>
> This is an outdated draft, it needs updated which once I have time in the next few days i'll update it and post it but this is my draft https://github.com/dstufft/peps/blob/master/pip-bundling.rst
>
> I hope the above is useful, and not out of date with where you plan on going with your updates. Apologies if I'm jumping the gun here.
>
> Paul.
>
> [1] Yes, I know it is stable - but the docs will say "not covered by Python stability guarantees" which gives the *impression* "not stable" :-(
Perhaps the wording should explicitly mention that it is not covered by Python's stability guarantees but is instead covered by pip's backwards compat policy (and then we need to actually close the loop on that :V).
-----------------
Donald Stufft
PGP: 0x6E3CBCE93372DCFA // 7C6B 7C5D 5E2B 6356 A926 F04F 6E3C BCE9 3372 DCFA
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/distutils-sig/attachments/20130819/788c02da/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://mail.python.org/pipermail/distutils-sig/attachments/20130819/788c02da/attachment-0001.sig>
More information about the Distutils-SIG
mailing list