-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Description
Originally reported by: ncoghlan (Bitbucket: ncoghlan, GitHub: ncoghlan)
The error message received when a system installed package is missing a "namespace package" declaration is really cryptic. I encountered this for http://beaker-project.org when our common library was missing the namespace package declaration (it originally didn't seem necessary, since that package is the one that owns that namespace, and does have its __init__.py file installed as part of the OS package)
When running from a source checkout, we don't actually care that the system version is present, because sys.path ensures the installed released version is ignored. This also holds true for bkr.__path__.
However, because of the missing declaration, pkg_resources interprets this as an attempt to import a conflicting version of a top level module and ends up emitting a totally inappropriate error message from check_version_conflict() (see the final warning in
https://bitbucket.org/pypa/setuptools/src/6aa3034bc297e98ed1a8422d96754cc0d6734667/pkg_resources.py?at=default#cl-2545)
There should be something in declare_namespace() that checks for this and emits a less cryptic error message that makes it clear:
- It found some metadata for that package (and where it found it)
- The metadata doesn't say anything about this being a namespace package
See http://stackoverflow.com/questions/13915269/why-do-i-get-userwarning-module-dap-was-already-imported-from-none/ for some background