2013-07-10 2 views
5

Ich sehe, dass man mehrere Versionen eines Python-Paket installiert haben könnte:Welches Paket verwendet 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 

Wie kann ich überprüfen, welche Version eines Pakets (das heißt die Datei, nicht die Versionsnummer) eine Anwendung verwendet wird? Ignorieren Sie das offensichtliche "Zim wird das Paket bei /usr/lib/pymodules/python2.7/zim/signals.py verwenden" gibt es Möglichkeit zu sehen, welche Datei für ein bestimmtes Python-Paket verwendet wird?

Einige Pakete kann ich abstürzen und auf das Backtrace schauen. Ich denke nicht, dass dies die beste Methode ist!

Antwort

7

Das __file__ Attribut wird Ihnen sagen:

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

.pyc Dateien kompiliert werden, so dass die Datei, die Sie suchen in diesem Fall tatsächlich für sie die /usr/lib/python2.7/unittest/signals.py Datei.

+0

Danke Lennart! – dotancohen

3

Ich hoffe, dass ich es richtig verstanden, aber hier ist, wie Sie die Lage des Moduls herausfinden, Sie geladen:

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

Vielen Dank. – dotancohen