2010-10-05 12 views
18

Ottenere i seguenti tipi di avvisi quando si esegue la maggior parte degli script Python nella riga di comando:Come si corregge il Modulo già caricato UserWarnings in Python?

/Library/Python/2.6/site-packages/virtualenvwrapper/hook_loader.py:16: UserWarning: Module 

pkg_resources was already imported from /System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.pyc, but /Library/Python/2.6/site-packages is being added to sys.path 
    import pkg_resources 

/Library/Python/2.6/site-packages/virtualenvwrapper/hook_loader.py:16: UserWarning: Module site was already imported from /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site.pyc, but /Library/Python/2.6/site-packages is being added to sys.path 
    import pkg_resources 

Io penso che abbia a che fare con una combinazione di utilizzare distribuire e virtualenv, ma ha voluto verificare se qualcun altro ha eseguito in a questo o vorrebbe sapere come risolverlo.

+3

che può accadere se si installa la stessa libreria utilizzando due diversi metodi di installazione (un pacchetto di sistema operativo, e easy_install, fi). – Apalala

risposta

7

È possibile utilizzare l'opzione virtualenv --no-site-packages in modo da non visualizzare alcun pacchetto di sistema nel proprio ambiente virtuale. La presenza di elementi installati sia nella virtualenv che nella root di sistema potrebbe essere la causa di questo problema.

L'utilizzo di --no-site-packages durante la creazione di virtualenv impedisce qualsiasi conflitto tra i pacchetti di sistema. Quasi sempre utilizzo questa opzione quando creo una nuova virtualenv per prevenire eventuali conflitti. Sebbene io possa avere diverse copie di librerie, almeno non si confondono tra loro.

+0

Sì, lo pratico anche io. Non ricordo se stavo usando virtualenv quando ho avuto questo problema, ma sono abbastanza sicuro che sia collegato a questo. –

+0

Da novembre 2011, '--no-site-packages' [è stato predefinito] (http://virtualenv.readthedocs.org/en/latest/changes.html#id38). – duozmo

4

L'equivalente python di mettere un po 'di nastro isolante sopra la spia del motore di controllo sarebbe utilizzare il flag della riga di comando -W o aggiungendo un warning filter.

+0

Questa sarebbe davvero la correzione del nastro elettrico haha. Sto optando per la via più solida di rimozione di 'distribute' e di reinstallazione, ma non ho ancora trovato un metodo decente per questo senza l'installazione di setuptools. –

2

Nel mio caso la reinstallazione di qualcosa non ha aiutato. Ci sono stati alcuni file orfani (.pyc pkg_resources.pyc in particolare) lasciato in /System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python

sudo find . -type f -name "*.pyc" -delete 

ha reso il lavoro. This link mi ha aiutato a rintracciare il problema.

0

Oggi ho avuto anche questa sorta di pacchettino Python.

In esecuzione Python 2.7.3 su Ubuntu, utilizzando i pacchetti dello spazio dei nomi e utilizzando zc.buildout.

Infine, l'aggiornamento del sistema Distribuisci dalla versione precedente 0.6.30 all'ultima versione 0.6.35 ha risolto il problema.

0

Se l'avviso mostra in un programma che si sta modificando, provate in questo modo (examply con pytz):

try: 
    import pytz 
except ImportError: 
    from pkg_resources import require 
    require('pytz') 
Problemi correlati