我想修改我下載了一個Python庫和正在使用。但是我所做的改變並沒有做任何事情。所以我懷疑python是從文件系統的其他地方導入這個庫的不同副本。所以......我怎樣才能知道導入庫來自哪個目錄從蟒蛇?
當我運行在python import foolib
,我怎麼能知道哪裏上的文件系統,它變得該庫的?
我想修改我下載了一個Python庫和正在使用。但是我所做的改變並沒有做任何事情。所以我懷疑python是從文件系統的其他地方導入這個庫的不同副本。所以......我怎樣才能知道導入庫來自哪個目錄從蟒蛇?
當我運行在python import foolib
,我怎麼能知道哪裏上的文件系統,它變得該庫的?
import foolib
print foolib.__file__
不幸的是,這隻適用於某些模塊。例如。它適用於我編寫的模塊,但不適用於sys
。
看那foolib.__file__
。
正確的答案是使用sys.modules
...它適用於的一切,甚至sys
。 sys.modules
是一個字典,其中鍵是導入的名稱(模塊或包),和的值是它們各自的位置。這裏是我的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'>