Why do I get "UserWarning: Module dap was already imported from None ..."


Question

I have python-matplotlib and python-mpltoolkits.basemap installed from Ubuntu packages. Installing python-mpltoolkits.basemap also installs python-dap as a dependency.

When I import basemap, I get this warning:

>>> import mpl_toolkits.basemap
/usr/lib/pymodules/python2.7/mpl_toolkits/__init__.py:2: UserWarning: Module dap was
already imported from None, but /usr/lib/python2.7/dist-packages is being added to sys.path
  __import__('pkg_resources').declare_namespace(__name__)

Does this mean I have 2 conflicting installs of dap? (That might be possible, remnants of some old manual installs.) Here is a somewhat similar warning message, but in his case the message tells where the other, conflicting, install is located. My message just says None. What does this mean?

EDIT 1:

>>> import sys
>>> print sys.modules['dap']
<module 'dap' (built-in)>

EDIT 2:

$ python -S
Python 2.7.3 (default, Sep 26 2012, 21:53:58) 
[GCC 4.7.2] on linux2
>>> import sys
>>> print sys.modules['dap']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'dap'

EDIT 3: yes I seem to have sitecustomize.py:

$ cat /etc/python2.7/sitecustomize.py
# install the apport exception handler if available
try:
    import apport_python_hook
except ImportError:
    pass
else:
    apport_python_hook.install()

EDIT 4: actually I can get the error by:

>>> import pkg_resources
__main__:1: UserWarning: Module dap was already imported from None, but /usr/lib/python2.7/dist-packages is being added to sys.path

so this has nothing to do with mpl_toolkits.basemap as such.

1
12
5/23/2017 12:30:55 PM

Accepted Answer

I can't really say that I'd understand the details, but apparently whenever the package python-dap is installed, then trying to import pkg_resources gives this warning. Here is some discussion.

Following advice from here (comment 29 at the end of the page), I added dap as the first line in file /usr/lib/python2.7/dist-packages/dap-2.2.6.7.egg-info/namespace_packages.txt and get no more warnings. Hope this does not break anything.

24
12/18/2012 12:41:37 AM

I recently had to track down a similar problem, and the actual meaning of the error message:

UserWarning: Module dap was already imported from None, but /usr/lib/python2.7/dist-packages is being added to sys.path

Appears to be "While extending the path for 'dap', found an egg-info directory that does not declare 'dap' to be a namespace package".

This suggests two things: python-dap is missing a "namespace_packages=['dap']" declaration in its own setup.py, and setuptools really should give a better error message in this case...


Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon