Python 模块搜索路径

时间:2023-11-11 17:12:32

Python 会在什么地方寻找文件来导入模块?

使用命名为 path 变量的存储在标准 sys 模块 下的一系列目录名和 ZIP 压缩文件。

你可以读取和修改这个列表。下面是在我的 Mac 上 Python 3.3 的 sys.path 的内容:

>>> import sys
>>> for place in sys.path:
... print(place)
...
/Library/Frameworks/Python.framework/Versions/3.3/lib/python33.zip
/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.
/Library/Frameworks/Python.framework/Versions/3.3/lib/python3./plat-darwin
/Library/Frameworks/Python.framework/Versions/3.3/lib/python3./lib-dynload
/Library/Frameworks/Python.framework/Versions/3.3/lib/python3./site-packages

最开始的空白输出行是空字符串 '',代表当前目录。

如果空字符串是在 sys.path 的开始 位置,Python 会先搜索当前目录:import report 会寻找文件 report.py。

第一个匹配到的模块会先被使用,这也就意味着如果你在标准库之前的搜索路径上定义一 个模块 random,就不会导入标准库中的 random 模块。