2010-04-15 12 views
5

Sto provando a modificare una libreria python che ho scaricato e sto usando. Ma i cambiamenti che sto facendo non stanno facendo nulla. Quindi sospetto che Python stia importando una copia diversa di questa libreria da qualche altra parte sul filesystem. Quindi ...Come posso sapere da quale directory proviene una libreria importata in python?

Quando eseguo import foolib in python, come posso sapere da dove proviene il file system dalla libreria?

risposta

6
import foolib 
print foolib.__file__ 

Sfortunatamente, questo funziona solo per alcuni moduli. Per esempio. funziona su un modulo che ho scritto, ma non su sys.

2

Vedere foolib.__file__.

8

la risposta corretta è utilizzare sys.modules ... funziona su tutto, anche sys. sys.modules è un dizionario in cui le chiavi sono i nomi importati (moduli o pacchetti) ei valori sono le rispettive posizioni. ecco alcuni output di utilizzo dal mio Mac:

$ python 
Python 2.5.1 (r251:54863, Feb 9 2009, 18:49:36) 
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import sys, os, django, google 
>>> sys.modules['sys'] 
<module 'sys' (built-in)> 
>>> sys.modules['os'] 
<module 'os' from '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/os.pyc'> 
>>> sys.modules['django'] 
<module 'django' from '/Library/Python/2.5/site-packages/Django-1.1.1-py2.5.egg/django/__init__.pyc'> 
>>> sys.modules['google'] 
<module 'google' from '/usr/local/google_appengine/google/__init__.py'> 
Problemi correlati