[Import-SIG] [Distutils] nspkg.pth files break $PYTHONPATH overrides

Eric Snow ericsnowcurrently at gmail.com
Thu Mar 27 04:55:18 CET 2014


On Tue, Mar 25, 2014 at 2:30 PM, PJ Eby <pje at telecommunity.com> wrote:
> On Tue, Mar 25, 2014 at 3:50 PM, Barry Warsaw <barry at python.org> wrote:
>> There is.  It's *pronounced* sys.namespace_packages, but it's spelled
>> importlib._bootstrap._NamespaceLoader ;)
>
>
> Yeah, well that's not exactly a public attribute, so it's not necessarily a
> great way to do it.  But if we did use that, presumably it'd add something
> like:
>
>     hnp =
> hasattr(sys.modules.get('importlib._bootstrap',None),'_NamespaceLoader');

In 3.4 it's called _NamespaceLoader, but in 3.3 it's NamespaceLoader. <ducks>

>
> To the front of the magic, and then prefix all subsequent expression values
> with 'not hnp and' in order to prevent them executing if PEP 420 support is
> available. (Note: it's checking sys.modules since on any interpreter where
> PEP 420 is natively available, the module should *already* be loaded by the
> time site.py does its thing.)
>
> And we should probably think about adding sys.namespace_packages or
> something of the sort, or at least a proper flag for whether PEP 420 support
> is available on the platform.

By "available on the platform" do you mean "Python 3.3+ or has a
backport installed"?  Otherwise you'd just check sys.version*.

-eric


More information about the Import-SIG mailing list