[Distutils] PEP 439 and pip bootstrap updated

Brett Cannon brett at python.org
Thu Jul 11 17:50:54 CEST 2013


On Thu, Jul 11, 2013 at 10:52 AM, Donald Stufft <donald at stufft.io> wrote:

>
> On Jul 11, 2013, at 10:47 AM, Brett Cannon <brett at python.org> wrote:
>
> I'm just not seeing the downside. We control the stdlib and pip, so we
> know the expected interaction and we are purposefully using the override
> mechanics so it's not going to get messed up by us if we consciously use it
> (and obviously have tests for it).
>
>
> I don't think it's especially a problem for pip. I think Daniel was just
> speaking how the behavior you suggested we could exploit to make this
> happen has been a major issue for namespace packages in the past using the
> other methods.
>
> However I'm not sure how it's going to work… python -m pip is going to
> import the pip namespace package yes? And then when pip is installed it'll
> shadow that, but in the original process where we ran python -m pip won't
> the namespace package have been cached in sys.modules already?
>

Yes, but you can clear it out of sys.modules before executing runpy to get
the desired effect of falling through to the regular package (runpy
wouldn't import pip.__main__ so you literally just need ``del
sys.modules['pip']``). You could also pull the old pkgutil.extend_path()
trick and use the append method on the _NamespacePath object to directly
add the new directory that pip was installed to and then import
pip.runner.main(), but that feels like more of a hack to me (but then again
I'm rather comfortable mucking with the import system =).
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/distutils-sig/attachments/20130711/e0d975d7/attachment-0001.html>


More information about the Distutils-SIG mailing list