Почему я получаю "UserWarning: модуль dap уже импортирован из None..."
У меня есть python-matplotlib
и python-mpltoolkits.basemap
, установленные из пакетов Ubuntu. Установка 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__)
Означает ли это, что у меня две конфликтующие установки 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()
EDIT 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
как таковым.
Ответы
Ответ 1
Я не могу сказать, что я бы понял подробности, но, видимо, всякий раз, когда пакет python-dap
установлен, тогда попытка import pkg_resources
дает это предупреждение. Здесь обсуждается.
Следуя советам здесь (комментарий 29 в конце страницы), я добавил dap
в качестве первой строки в файле /usr/lib/python2.7/dist-packages/dap-2.2.6.7.egg-info/namespace_packages.txt
и не получил больше предупреждения. Надеюсь, это ничего не сломает.
Ответ 2
Недавно мне пришлось отслеживать аналогичную проблему и фактический смысл сообщения об ошибке:
UserWarning: Module dap was already imported from None, but /usr/lib/python2.7/dist-packages is being added to sys.path
Появляется как "Расширяя путь для" dap ", нашел директорию с информацией о яйце, которая не объявляет" dap "как пакет пространства имен".
Это говорит о двух вещах: в python-dap отсутствует объявление namespace_packages = ['dap'] в его собственном setup.py, а setuptools действительно должно дать лучшее сообщение об ошибке в этом случае...
Ответ 3
Если вам не нужен пакет, просто удалите его, например. на системе Ubuntu или Debian apt-get remove --purge python-dap
удалил пакет для меня и отключил это предупреждение. Легко случайно установить пакеты, которые вам не нужны, из-за рекомендаций по зависимостям при установке некоторых пакетов.
Когда вы попытаетесь удалить его, система упаковки предупредит вас об удалении пакета (в этом случае python-dap
, но другие пакеты могут вызвать эту ошибку) тоже заставит удалить другие пакеты, которые зависят от Это. В моем случае нет других пакетов, которые напрямую зависят от python-dap
, и я не использовал его ни для чего, о чем я знал, поэтому его удаление было простым, безболезненным и заставило замолчать предупреждение.
Другие установщики пакетов (например, системы упаковки, отличные от ОС, такие как pip
или easy_install
) могут затруднить удаление пакета; вам может потребоваться удалить пакет вручную, поэтому я бы рекомендовал принятый ответ как способ отключить предупреждение, если только метод apt-get remove
, который я рекомендовал здесь, работает для вас.