2013-08-30 53 views
3

我得到了模塊名稱,其中包含聲明os.path.isfileJedi lib給了我genericpath(沒有文件路徑)。現在我想用這個genericpath模塊獲取PY文件的完整文件名。例如。 「C:\ Py27 \ LIB \ genericpath.py」。我該怎麼做?傑迪不能做到這一點?查找Python模塊文件名

+0

'打印(genericpath)' – Viney

回答

6

你可以檢查的__file__值:

>>> import genericpath 
>>> genericpath.__file__ 
'/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/genericpath.pyc' 
+1

然後我需要將「.pyc」改爲「.py」,對不對? – Prog1020

+0

是的,源代碼位於.py文件中。 .pyc包含代碼的「編譯」版本 – crs17

+0

如果pyc文件沒有伴隨py文件怎麼辦? – tribbloid

3

像這樣:

>>> import re 
>>> re.__file__ 
'/usr/lib/python2.7/re.pyc' 

對於不Python的核心組成部分包,你也可以使用__path__

>>> import requests 
>>> requests.__file__ 
'/usr/local/lib/python2.7/dist-packages/requests-1.1.0-py2.7.egg/requests/__init__.pyc' 
>>> requests.__path__ 
['/usr/local/lib/python2.7/dist-packages/requests-1.1.0-py2.7.egg/requests'] 
+2

注意,''__path__''是不可靠的,因爲它可以在運行時改變。這確實是一個搜索路徑,而不是一個位置。 https://docs.python.org/2/tutorial/modules.html#packages-in-multiple-directories –

4

__file__不起作用時,請按照正確的方式進行操作 - 使用inspect

>>> import somemodule 
>>> import inspect 
>>> inspect.getfile(somemodule) 
'/usr/lib64/python2.7/somemodule.pyc'