考虑这行Python代码:
import foo
然后如何在磁盘上找到包含要在foo中执行的源代码的文件的位置?
(我在Win7上)
答案 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
即可找到正在使用的内容。如果加载了错误的文件,解决问题的唯一方法是使用PYTHONPATH
或sys.path
。