Подтвердить что ты не робот

Почему я получаю "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 как таковым.

4b9b3361

Ответ 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, который я рекомендовал здесь, работает для вас.