New submission from Vadim Kantorov:
If module's __init__.py contains
"__import__('pkg_resources').declare_namespace(__name__)", the module is not
loaded, even though it's located in the current directory and should mask other
modules.
Originally I stumbled upon this issue while installing a new version of Google
Protobuf. But here's a simpler repro:
$ python -c 'import json; print json.__file__'
/usr/lib/python2.7/json/__init__.pyc
$ mkdir json; echo "print 'test'" > json/__init__.py
$ python -c 'import json; print json.__file__'
test
json/__init__.py
$ echo "__import__('pkg_resources').declare_namespace(__name__); print 'test'"
> json/__init__.py
$ python -c 'import json; print json.__file__'
test
/usr/lib/python2.7/json/__init__.pyc
For Protobuf, if you build Python bindings from sources, the google/__init__.py
will contain exactly "__import__('pkg_resources').declare_namespace(__name__)"
and it prevents the freshly-built module from being loaded, even if the module
egg is at the first place in sys.path. So an older version gets loaded and it
screws things up.
Ubuntu 14.10, Python 2.7.8
----------
components: Extension Modules
messages: 248948
nosy: Vadim Kantorov
priority: normal
severity: normal
status: open
title: Module location load order is not respected if pkg_resources is imported
and a namespace is declared
versions: Python 2.7
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue24907>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com