如何获取Python导入的库的文件位置

时间:2011-06-11 00:28:29

标签: python python-2.6

考虑这行Python代码:

import foo

然后如何在磁盘上找到包含要在foo中执行的源代码的文件的位置?

(我在Win7上)

2 个答案:

答案 0 :(得分:4)

您可以在

中找到相关信息
foo.__file__

请注意,并非所有模块都来自文件。有些模块也直接编译到解释器中,这些模块没有__file__属性。

可以在sys.builtin_module_names中找到解释器中包含的模块列表。

答案 1 :(得分:0)

当模块没有与文件系统中的文件进行一对一映射时,我不确定__file__的值。具体来说,如果它正在加载ZIP文件中找到的模块,我不确定__file__会是什么样子。 (当我需要这样的映射时,我使用了元组(“path / to / file.zip”,“path / within / zip / module.pyc”),但这是手动遍历sys.path的结果。如果只是将__file__设置为None,我就不会感到惊讶。

如果要加载哪个同名模块是一个问题,它始终是sys.path上找到的第一个模块。

在您首次导入包之前可以sys.path.insert(0, some_dir)手动调整内容。 (在环境中,这是使用PYTHONPATH设置的。)

理想情况下,您只需选中PYTHONPATH和/或sys.path即可找到正在使用的内容。如果加载了错误的文件,解决问题的唯一方法是使用PYTHONPATHsys.path