13

我已经安装python-matplotlibpython-mpltoolkits.basemapUbuntu 软件包。安装python-mpltoolkits.basemap也会python-dap作为依赖项安装。

当我导入底图时,我收到以下警告:

>>> 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__)

这是否意味着我有 2 个相互冲突的安装dap?(这可能是一些旧手动安装的残余。)是一个有点类似的警告消息,但在他的情况下,该消息告诉另一个冲突安装的位置。我的消息只是说None。这是什么意思?

编辑1:

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

编辑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'

编辑3:是的,我似乎有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()

编辑4:实际上我可以通过以下方式得到错误:

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

所以这与此无关mpl_toolkits.basemap

4

3 回答 3

24

我真的不能说我会理解细节,但显然每当python-dap安装软件包时,就会试图import pkg_resources给出这个警告。这里有一些讨论。

根据此处的建议(页面末尾的评论 29),我将其添加dap为文件的第一行,/usr/lib/python2.7/dist-packages/dap-2.2.6.7.egg-info/namespace_packages.txt 并且不再收到警告。希望这不会破坏任何东西。

于 2012-12-18T00:41:37.783 回答
2

我最近不得不追查一个类似的问题,以及错误消息的实际含义:

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

似乎是“在扩展 'dap' 的路径时,发现了一个未将 'dap' 声明为命名空间包的 egg-info 目录”。

这表明了两件事:python-dap 在自己的 setup.py 中缺少“namespace_packages=['dap']”声明,在这种情况下,setuptools确实应该给出更好的错误消息......

于 2013-05-28T08:46:03.823 回答
0

如果您不需要该软件包,只需将其删除即可,例如在 Ubuntu 或 Debian 系统apt-get remove --purge python-dap上为我删除了该软件包并消除了警告。在安装某些包时,由于依赖建议,很容易意外安装不需要的包。

当您尝试删除它时,如果删除包(在这种情况下python-dap,但其他包也可能导致此错误发生)也会强制删除依赖于它的其他包,打包系统会警告您。就我而言,没有其他直接依赖的软件包,python-dap而且我没有将它用于我所知道的任何事情,因此卸载它很简单,无痛,并且使警告静音。

其他包安装程序(例如非操作系统打包系统,如pipor easy_install)可能会使删除包变得更加困难;您可能需要手动删除包,所以我建议将接受的答案作为消除警告的apt-get remove方法,除非我在此处推荐的方法适合您。

于 2013-12-17T02:27:37.737 回答