2013-07-10 13 views
5

Vedo che uno potrebbe avere diverse versioni di un pacchetto di Python installato:Quale pacchetto usa Python?

$ locate signals.py | grep python 
/usr/lib/pymodules/python2.7/zim/signals.py 
/usr/lib/pymodules/python2.7/zim/signals.pyc 
/usr/lib/python2.7/dist-packages/bzrlib/smart/signals.py 
/usr/lib/python2.7/dist-packages/bzrlib/smart/signals.pyc 
/usr/lib/python2.7/unittest/signals.py 
/usr/lib/python2.7/unittest/signals.pyc 
/usr/lib/python3.2/unittest/signals.py 

Come potrei controllare quale versione di un pacchetto (cioè quale file, senza i quali il numero di versione) viene utilizzata da un'applicazione? Ignorando l'ovvio "Zim userà il pacchetto a /usr/lib/pymodules/python2.7/zim/signals.py" c'è modo di vedere quale file viene usato per un particolare pacchetto Python?

Alcuni pacchetti posso bloccare e guardare il backtrace. Non penso che questo sia il metodo migliore, comunque!

risposta

7

L'attributo __file__ vi dirà:

>>> from unittest import signals 
>>> signals.__file__ 
'/usr/lib/python2.7/unittest/signals.pyc' 

.pyc sono file compilati, in modo che il file che in realtà stanno cercando in questo caso il file /usr/lib/python2.7/unittest/signals.py.

+0

Grazie Lennart! – dotancohen

3

spero ho capito bene, ma ecco come trovare la posizione del modulo è stato caricato:

shell> python -c 'import jinja2; print jinja2.__file__' 
/Library/Python/2.7/site-packages/jinja2/__init__.pyc 
+0

Grazie mille. – dotancohen