Pourquoi suis-je “UserWarning: Module dap a déjà été importé à partir de Rien ...”
J'ai python-matplotlib
et python-mpltoolkits.basemap
installé à partir de paquets d'Ubuntu. L'installation de python-mpltoolkits.basemap
installe également python-dap
comme une dépendance.
Lors de l'importation de fond de carte, j'obtiens cet avertissement:
>>> 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__)
Est-ce à dire que j'ai 2 contradictoires installe de dap
? (Cela peut être possible, les restes de quelques vieux manuel de l'installation.) Ici est un peu le même message d'avertissement, mais dans son cas, le message indique où en sont les autres, contradictoires, l'installation est située. Mon message juste dit None
. Qu'est-ce que cela signifie?
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: oui il me semble avoir 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: en fait, j'pouvez obtenir l'erreur par:
>>> 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
donc cela n'a rien à voir avec mpl_toolkits.basemap
en tant que tel.
- Cela signifie qu'il ya une entrée
sys.modules['dap']
qui n'est pas un chemin d'accès. C'est un avertissement, d'ailleurs, pas une exception, donc il est peut-être bien. Ce n'print sys.modules['dap']
vous donner? - Cela signifie qu'il n'a pas de nom de fichier; il est automatiquement marqué comme
(built-in)
. Intéressant, je me demande ce que piquer dedans. Avez-vous importer quoi que ce soit ou est-ce que un nettoyage de l'interpréteur python? Ou avez-vousimport mpl_toolkits.basemap
en premier? - Il n'a pas d'importance si je
import mpl_toolkits.basemap
premier ou pas, le résultat est le même. - C'est important pour moi. 🙂 Cela signifie que quelque chose au démarrage est de fouiller dans; il pourrait y avoir un
sitecustomize.py
ouusercustomize.py
module quelque part que les violons de quelque chose. Essayez d'exécuterpython -S
(désactiversite.py
) et de testersys.modules['dap']
de nouveau. - Ok, j'ai ajouté le résultat de l'exécution avec
python -S
et le contenu de ma/etc/python2.7/sitecustomize.py
ci-dessus. Je n'ai pas deusercustomize.py
(au moinslocate
ne peut pas trouver tout).
Vous devez vous connecter pour publier un commentaire.
Je ne peux pas vraiment dire que je serais comprendre les détails, mais apparemment, chaque fois que le paquet
python-dap
est installé, puis d'essayer deimport pkg_resources
donne cet avertissement. Ici est une discussion.Suivant les conseils de ici (commentaire 29 à la fin de la page), j'ai ajouté
dap
à la première ligne du fichier/usr/lib/python2.7/dist-packages/dap-2.2.6.7.egg-info/namespace_packages.txt
et d'obtenir plus d'avertissements. Espérons que ce n'est pas rien casser.J'ai récemment eu à traquer un problème similaire, et le véritable sens du message d'erreur:
Semble être "Tout en élargissant la voie pour 'dap', a trouvé un oeuf-info répertoire de ne pas déclarer 'dap' être un espace de noms de package".
Cela suggère deux choses: python-dap est manquant "namespace_packages=['dap']" déclaration sur ses propres setup.py et setuptools vraiment devrait donner un meilleur message d'erreur dans ce cas...
Si vous n'avez pas besoin du package, il suffit de le supprimer, par exemple, sur une Ubuntu ou Debian système
apt-get remove --purge python-dap
supprimé le paquet pour moi et qui réduit au silence de l'avertissement. Il est facile de par inadvertance installer les paquets que vous n'avez pas besoin, en raison de la dépendance des recommandations lors de l'installation de certains paquets.Lorsque vous essayez de supprimer le système d'emballage vous avertira si la suppression du paquet (dans ce cas
python-dap
, mais d'autres paquets peut provoquer cette erreur se produise, trop) serait également forcer la suppression d'autres paquets qui en dépendent. Dans mon cas, il n'y a pas d'autres paquets qui dépendait directement surpython-dap
et je n'étais pas à l'utiliser pour quoi que ce soit que j'étais au courant, de sorte que la désinstallation c'est simple, indolore, et réduit au silence de l'avertissement.D'autres programmes d'installation de packages (tels que la non-OS systèmes d'emballage comme
pip
oueasy_install
) peut rendre plus difficile de supprimer le paquet; vous devrez peut-être supprimer le paquet à la main, donc j'aurais plutôt que de recommander la accepté de répondre à comme le moyen de réduire au silence l'avertissement, sauf si leapt-get remove
méthode que je recommande ici fonctionne pour vous.