这是一个关于 Python 包管理的 PEP(Python 增强提案),主要内容如下:
- 基本信息:作者为 Brett Cannon <brett at python.org>,状态为 Accepted,类型为 Standards Track,主题为Packaging,创建于 24-Jul-2024,有多个 Post-History 记录及相关替换和决议。
- 目录结构:包含Abstract、Motivation等多个部分。
- Abstract(摘要):提出新的文件格式用于指定 Python 环境中的依赖项,以实现可重现安装,格式设计为人可读且机器生成。
- Motivation(动机):当前缺乏创建不可变记录(如锁文件)的标准,已有多种相关工具但存在差异和不足,如支持的锁定场景不同、缺乏安全默认值、工具间兼容性差等,而 pip 的 requirements 文件也存在问题。
- Rationale(基本原理):文件格式设计为人可读,无需安装时的解析器,数据可被非 Python 工具消费,应促进良好的安全默认值,锁文件可单用途或多用途,且应能替代大部分 requirements 文件的用途。
Specification(规范):
- FileName(文件名):锁文件必须命名为
pylock.toml
或符合特定正则表达式,服务应按特定顺序搜索锁文件。 - FileFormat(文件格式):基于 TOML 格式,工具应按一致方式编写锁文件,包含多个键值对,如
lock-version
、environments
等。 - Additions to marker expression syntax(标记表达式语法的添加):向环境标记规范添加
extras
和dependency_groups
等,允许在标记中表达额外和依赖组关系。 - Example(示例):给出一个具体的锁文件示例。
- Installation(安装):详细说明了从锁文件安装的步骤。
- Semantic differences with requirements.txt files(与 requirements.txt 文件的语义差异):在安全性、明确支持的 Python 版本和环境、
[tool]
表等方面与 requirements 文件存在差异。
- FileName(文件名):锁文件必须命名为
- Backwards Compatibility(向后兼容性):由于没有预定义的锁文件格式,不存在明确的向后兼容性问题,具体由工具决定是否支持该 PEP。
- Security Implications(安全影响):标准化锁文件格式有助于提高包装安装的安全性,但不能解决所有安全问题,如锁文件被篡改等。
- How to Teach This(如何教授此内容):向用户解释锁文件的作用、支持的环境、单用途或多用途等概念。
- Reference Implementation(参考实现):提供了一个概念验证的实现示例及其他相关工具。
- Rejected Ideas(被拒绝的想法):包括记录依赖图、指定新的核心元数据版本、让安装器进行依赖解析等多个被考虑但最终被否决的想法及原因。
- Acknowledgements(致谢):感谢参与讨论的人员及提供反馈的相关人员。
- Copyright(版权):文档置于公共领域或 CC0-1.0-Universal 许可下。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。