我看到 .pth 和 ._pth 文件有两种不同的行为:
Windows 的官方 Python 安装使用
.pth
中的 lib\site-packages
文件,如 https://docs.python.org/3.12/library/site.html#module-site 中所述。看来添加多个 .pth
文件是有效的,并且在 Python 解释器启动时使用 。
Embedded 包似乎使用 ._pth
文件(而不是
.pth
!)来实现相同的目的:
python38._pth
,但与
python.exe
在同一个文件夹中。在这种情况下,解释器似乎不会在同一文件夹中添加第二个
.pth
或
._pth
文件。为什么?有记录表明,对于嵌入式 Python,仅使用一个 ._pth 吗?
.pth
与 ._pth
文件的规则是什么?在哪种情况下我们应该使用其中之一,下划线_pth的原因是什么?注意:这里的规则似乎很复杂(.pth 与 ._pth ;允许多个文件与仅使用一个文件)。 注意:
有关 ._pth
文件的文档根据我对所提供文档的理解,我看到:.pth
Files:在标准 Python 安装中用于向 Python 模块搜索路径添加额外目录 (
sys.path
)。
site
.pth
文件,为配置Python环境提供了灵活性。
._pth
文件:引入是为了提供更受控制的环境,特别是对于Python的嵌入式发行版。
._pth
文件指定 Python 将包含在其模块搜索路径中的一组固定目录,覆盖默认行为,包括 .pth
文件的处理。这确保嵌入式 Python 解释器仅使用指定的目录以可预测和隔离的方式运行。解释器仅识别和处理一个
._pth
文件,确保环境的单一配置。这意味着:
._pth
PYTHONPATH
环境变量、注册表中指定的应用程序路径以及相对于 Python 主目录的路径。该过程确保 Python 可以在各种配置中找到其库和模块。对于捆绑 Python(尤其是嵌入式发行版)的应用程序,
._pth
PYTHONPATH
、注册表项,甚至
site
模块,除非明确包含。该功能对于维护应用程序完整性并避免与其他 Python 安装发生冲突非常重要。您确实可以从文档中获得在应用程序中分发 Python 的明确指南,包括使用
._pth
简而言之:虽然
.pth
文件提供了在标准环境中扩展 Python 模块搜索路径的灵活性,但 ._pth
文件提供了一种为嵌入式 Python 发行版创建受控、隔离环境的机制。