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.

Was it helpful?

Solution

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.

OTHER TIPS

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...

If you don't need the package, simply remove it, e.g. on an Ubuntu or Debian system apt-get remove --purge python-dap removed the package for me and that silenced the warning. It is easy to accidentally install packages that you don't need because of dependency recommendations when installing some packages.

When you try to remove it the packaging system will warn you if removal of the package (in this case python-dap, but other packages could cause this error to happen, too) would also force removal of other packages which depend on it. In my case there are no other packages that directly depended on python-dap and I wasn't using it for anything that I was aware of, so uninstalling it was simple, painless, and silenced the warning.

Other package installers (such as the non-OS packaging systems like pip or easy_install) might make it more difficult to remove the package; you may need to delete the package by hand, so I'd instead recommend the accepted answer as the way to silence the warning unless the apt-get remove method I recommended here works for you.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top