内容提要
PEP 829 提议使用基于 TOML 的配置文件格式(<package>.site.toml)替代 .pth 文件,以改善 Python 启动时的包配置。新格式解决了 .pth 文件的结构混乱和安全隐患,支持路径扩展和初始化代码的明确声明,包含 [metadata]、[paths] 和 [entrypoints] 三个部分,确保更好的错误处理和未来扩展性,同时保持与旧版 Python 的兼容性。
关键要点
-
PEP 829 提议使用基于 TOML 的配置文件格式(<package>.site.toml)替代 .pth 文件,以改善 Python 启动时的包配置。
-
新格式解决了 .pth 文件的结构混乱和安全隐患,支持路径扩展和初始化代码的明确声明。
-
配置文件包含 [metadata]、[paths] 和 [entrypoints] 三个部分,确保更好的错误处理和未来扩展性。
-
新格式保持与旧版 Python 的兼容性,允许平滑迁移。
-
使用 TOML 格式使得配置文件更易于阅读和验证,支持未来的扩展。
-
处理模型采用两阶段方法,先读取再处理,提供更好的错误报告和灵活性。
-
新格式通过 importlib.import_module() 替代 exec(),提高了安全性和可审计性。
延伸问答
PEP 829 的主要目的是什么?
PEP 829 提议使用基于 TOML 的配置文件格式替代 .pth 文件,以改善 Python 启动时的包配置。
新格式的 .site.toml 文件解决了哪些问题?
新格式解决了 .pth 文件的结构混乱和安全隐患,支持路径扩展和初始化代码的明确声明。
.site.toml 文件包含哪些部分?
.site.toml 文件包含 [metadata]、[paths] 和 [entrypoints] 三个部分。
如何确保 .site.toml 文件与旧版 Python 的兼容性?
新格式保持与旧版 Python 的兼容性,允许平滑迁移,.site.toml 文件的存在会覆盖同目录下的 .pth 文件。
PEP 829 如何提高安全性?
PEP 829 通过使用 importlib.import_module() 替代 exec(),提高了安全性和可审计性。
PEP 829 中的处理模型是怎样的?
PEP 829 采用两阶段处理模型,先读取所有配置文件,再进行路径扩展和执行入口点代码。