Perché ricevo “UserWarning: Modulo di dap è già stata importata da Nessuno …”

Ho python-matplotlib e python-mpltoolkits.basemap installato da Ubuntu i pacchetti. L’installazione di python-mpltoolkits.basemap installa anche python-dap come una dipendenza.

Quando provo a importare le mappe di base, ricevo questo avviso:

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

Questo significa che ho 2 in conflitto installazioni di dap? (Che potrebbe essere possibile, i resti di alcune vecchie installazioni manuali.) Qui è un po ‘ simile messaggio di avviso, ma nel suo caso il messaggio dice dove l’altro, il conflitto, l’installazione è situato. Il mio messaggio dice solo None. Che cosa significa questo?

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: sì, mi sembra di aver 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: in realtà posso ottenere l’errore:

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

quindi questo non ha nulla a che fare con mpl_toolkits.basemap come tale.

  • Significa che c’è una voce sys.modules['dap'] che non è un percorso. E ‘ un avvertimento, btw, non un’eccezione, in modo che possa essere corretto. Cosa print sys.modules['dap'] dare?
  • Il che significa che non ha un nome di file, automaticamente viene contrassegnato come (built-in). Interessante, mi chiedo cosa si infilò dentro. Hai importare nulla o è una pulizia interprete python? O hai import mpl_toolkits.basemap prima?
  • Non importa se ho import mpl_toolkits.basemap prima o non, il risultato è lo stesso.
  • E ‘ importante per me. 🙂 Vuol dire che qualcosa di avvio è frugando che in; ci potrebbe essere una sitecustomize.py o usercustomize.py modulo da qualche parte che armeggia qualcosa. Provare a eseguire python -S (disabilitare site.py) e test sys.modules['dap'] di nuovo.
  • Ok, ho aggiunto il risultato dell’esecuzione con python -S e il contenuto del mio /etc/python2.7/sitecustomize.py sopra. Non ho un usercustomize.py (almeno locate è possibile trovare qualsiasi).



3 Replies
  1. 24

    Davvero non posso dire che mi piacerebbe capire i dettagli, ma a quanto pare ogni volta che il pacchetto python-dap è installato, e poi cercando di import pkg_resources dà questo avviso. Qui è qualche discussione.

    Consigli di qui (commento 29 alla fine della pagina), ho aggiunto dap come prima riga nel file /usr/lib/python2.7/dist-packages/dap-2.2.6.7.egg-info/namespace_packages.txt e ottenere senza ulteriori avvertimenti. Spero che questo non si rompe niente.

    • Vi ringrazio molto!
    • Per quanto posso dire, questa correzione è corretto, ma indica un bug nel setup.py per il “dap” del pacchetto.
  2. 2

    Recentemente ho dovuto rintracciare un problema simile, e il vero significato del messaggio di errore:

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

    Sembra essere “e di allungare il percorso per ‘dap’, trovato un uovo di informazioni di directory che non dichiara ‘dap’ essere uno spazio dei nomi pacchetto”.

    Questo suggerisce due cose: python-dap manca un “namespace_packages=[‘dap’]” dichiarazione nella propria setup.py e setuptools davvero dovrebbe dare un messaggio di errore migliore in questo caso…

  3. 0

    Se non avete bisogno di un pacchetto, è sufficiente rimuovere, ad esempio, su Ubuntu o Debian sistema apt-get remove --purge python-dap rimosso il pacchetto per me e a tacere il messaggio di avviso. È facile accidentalmente installare i pacchetti che non hai bisogno di a causa della dipendenza raccomandazioni durante l’installazione di alcuni pacchetti.

    Quando si tenta di rimuovere l’imballaggio il sistema avvisa l’utente se la rimozione del pacchetto (in questo caso python-dap, ma altri pacchetti che potrebbero causare questo errore capita, troppo) sarebbe anche forzare la rimozione di altri pacchetti che dipendono da esso. Nel mio caso ci sono altri pacchetti che dipende direttamente dal python-dap e non stavo utilizzando per nulla che ero a conoscenza, in modo che la disinstallazione è stato semplice e indolore, e messo a tacere il messaggio di avviso.

    Altri programmi di installazione di pacchetti (come la non-OS sistemi di imballaggio come pip o easy_install) potrebbe rendere più difficile per rimuovere il pacchetto; potrebbe essere necessario eliminare il pacchetto a mano, quindi mi piacerebbe, invece, consigliamo il accettato risposta come il modo per disattivare l’avviso, a meno che il apt-get remove metodo che ho consigliato qui funziona per voi.

Lascia un commento