当我使用导入模块时
import module_name
我能否查看模块在我的硬盘上的位置?
当我使用导入模块时
import module_name
我能否查看模块在我的硬盘上的位置?
值得一提的是,模块包有__file__
属性,指向__init__.py
文件。它们还有一个__path__
属性,指向模块包所在的目录。因此,你可以使用hasattr(module_name, '__path__') and module_name.__path__[0] or module_name.__file__
。
示例(在REPL中):
import socket, SOAPpy # SOAPpy is a package
socket.__file__
# .../python2.5/socket.pyc
socket.__path__
# AttributeError: 'module' object has no attribute '__path__'
SOAPpy.__file__
# .../2.5/site-packages/SOAPpy/__init__.pyc
SOAPpy.__path__
# ['.../2.5/site-packages/SOAPpy']
__file__
在那里 (package/__init__.pyc
),正如应该的那样,因为 "package" 导入只是一个名为 __init__
的模块。(package.__path__ == ['package']
) - Chris Morganimport module_name
module_name.__file__
您可以使用模块的 file 属性来查找位置。
import sys
print sys.__file__