官方文档点这里。
翻译如下:
sys.path 模块搜索路径的初始化
Python 启动时会初始化模块搜索路径。 可以在 sys.path 访问此模块搜索路径。
模块搜索路径中的第一个条目是包含输入脚本的目录(如果有的话)。 否则,第一个条目是当前目录,这是执行交互式 shell、-c 命令或 -m 模块时的情况。
PYTHONPATH 环境变量通常用于将目录添加到搜索路径。 如果找到此环境变量,则将内容添加到模块搜索路径中。
【备注】PYTHONPATH 将影响所有已安装的 Python 版本/环境。 小心在你的 shell 配置文件或全局环境变量中设置它。 site 模块提供了更细致入微的技术,如下所述。
添加的下一项是包含标准 Python 模块以及这些模块所依赖的任何扩展模块的目录。扩展模块是 Windows 上的 .pyd 文件和其他平台上的 .so 文件。具有独立于平台的 Python 模块的目录称为前缀。带有扩展模块的目录称为 exec_prefix。
PYTHONHOME 环境变量可用于设置前缀和 exec_prefix 位置。否则,这些目录是通过使用 Python 可执行文件作为起点,然后寻找各种“标志性”文件和目录来找到的。请注意,任何符号链接都会被跟踪,因此真正的 Python 可执行文件位置被用作搜索起点。 Python 可执行文件的位置称为 home。
确定 home 后,首先通过查找 pythonmajorversionminorversion.zip (python311.zip) 找到前缀目录。在 Windows 上,zip 存档在 home 中搜索,而在 Unix 上,存档预计在 lib 中。请注意,即使存档不存在,预期的 zip 存档位置也会添加到模块搜索路径中。如果没有找到存档,Windows 上的 Python 将通过查找 Lib\os.py 继续搜索前缀。 Unix 上的 Python 将查找 lib/pythonmajorversion.minorversion/os.py (lib/python3.11/os.py)。在 Windows 上,前缀和 exec_prefix 相同,但在其他平台上,会搜索 lib/pythonmajorversion.minorversion/lib-dynload (lib/python3.11/lib-dynload) 并将其用作 exec_prefix 的锚。在某些平台上,lib 可能是 lib64 或其他值,请参阅 sys.platlibdir 和 PYTHONPLATLIBDIR。
一旦找到,prefix 和 exec_prefix 分别在 sys.prefix 和 sys.exec_prefix 中可用。
最后,处理 site 模块并将 site-packages 目录添加到模块搜索路径中。自定义搜索路径的常用方法是创建 sitecustomize 或 usercustomize 模块,如 site 模块文档中所述。
【备注】 某些命令行选项可能会进一步影响路径计算。 有关详细信息,请参阅 -E、-I、-s 和 -S。
|