在python中,如果我有一個類foo
,我可以用call foo.__module__
來獲取一個字符串,它包含它所屬模塊的名稱。如何從模塊中獲取模塊路徑
如果我有一個模塊bar
,我可以調用bar.__file__
來獲取一個字符串與模塊加載的路徑。
如何,當我只有班foo我可以得到它是模塊的一部分的路徑? (foo.__module__
返回一個字符串,而不是模塊它名字的一個實例)
在python中,如果我有一個類foo
,我可以用call foo.__module__
來獲取一個字符串,它包含它所屬模塊的名稱。如何從模塊中獲取模塊路徑
如果我有一個模塊bar
,我可以調用bar.__file__
來獲取一個字符串與模塊加載的路徑。
如何,當我只有班foo我可以得到它是模塊的一部分的路徑? (foo.__module__
返回一個字符串,而不是模塊它名字的一個實例)
sys.modules
是從模塊名稱映射到模塊:
sys.modules[foo.__module__].__file__
對於這種自省的任務,我總是建議使用Python標準庫的inspect
模塊:它可以處理一些角落案例& c,並使整個過程更平滑。針對您的特殊任務,inspect.getsourcefile都能得心應手 - 例如,考慮...:
>>> from sched import scheduler as someclass
>>> import inspect
>>> inspect.getsourcefile(someclass)
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/sched.py'
這總是試圖給你.py
文件,而不是有時.py
文件,有時一個.pyc
文件,而不是 - 不是大不了,但更有用的「規律」。