模块的实际文件在哪里? [复制]
Posted
技术标签:
【中文标题】模块的实际文件在哪里? [复制]【英文标题】:Where is the actual file for a module? [duplicate] 【发布时间】:2017-09-24 23:25:19 【问题描述】:我显然安装了多个版本的模块,我试图找出文件的位置,因为其中只有一个来自包管理,我想删除另一个。
有没有一种简单的方法可以在导入模块后询问 Python 在哪里找到模块?
【问题讨论】:
【参考方案1】:如果模块不是内置的,你可以这样做:
import your_module
print(your_module.__file__)
测试:
>>> import os
>>> print(os.__file__)
L:\Python34\lib\os.py
如果模块是内置的,你会得到一个错误:
>>> import sys
>>> print(sys.__file__)
Traceback (most recent call last):
File "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
AttributeError: 'module' object has no attribute '__file__'
>>>
(使用hasattr
检查模块是否具有__file__
属性也是避免错误的一种选择;if hasattr(module_name, '__file__'):
)
另外:直接打印模块:
>>> print(os)
<module 'os' from 'L:\\Python34\\lib\\os.py'>
【讨论】:
只做print module
有点“优雅”,仍然有用import os; print os
打印<module 'os' from '/usr/lib/python2.7/os.pyc'>
和import sys; print sys
打印<module 'sys' (built-in)>
可能值得添加if hasattr(module_name, '__file__'):
好建议。我希望你不介意我用这些来编辑我的答案。【参考方案2】:
导入模块后可以使用__file__
:
>>> import os
>>> os.__file__
'/usr/lib/python2.7/os.pyc'
【讨论】:
以上是关于模块的实际文件在哪里? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Perl 程序如何知道在哪里可以找到包含它使用的 Perl 模块的文件?