PEP 751 – 一种用于记录 Python 安装可重复性依赖项的文件格式 | peps.python.org

这是一个关于 Python 包管理的 PEP(Python 增强提案),主要内容如下:

  • 基本信息:作者为 Brett Cannon <brett at python.org>,状态为 Accepted,类型为 Standards Track,主题为Packaging,创建于 24-Jul-2024,有多个 Post-History 记录及相关替换和决议。
  • 目录结构:包含AbstractMotivation等多个部分。
  • Abstract(摘要):提出新的文件格式用于指定 Python 环境中的依赖项,以实现可重现安装,格式设计为人可读且机器生成。
  • Motivation(动机):当前缺乏创建不可变记录(如锁文件)的标准,已有多种相关工具但存在差异和不足,如支持的锁定场景不同、缺乏安全默认值、工具间兼容性差等,而 pip 的 requirements 文件也存在问题。
  • Rationale(基本原理):文件格式设计为人可读,无需安装时的解析器,数据可被非 Python 工具消费,应促进良好的安全默认值,锁文件可单用途或多用途,且应能替代大部分 requirements 文件的用途。
  • Specification(规范)

    • FileName(文件名):锁文件必须命名为pylock.toml或符合特定正则表达式,服务应按特定顺序搜索锁文件。
    • FileFormat(文件格式):基于 TOML 格式,工具应按一致方式编写锁文件,包含多个键值对,如lock-versionenvironments等。
    • Additions to marker expression syntax(标记表达式语法的添加):向环境标记规范添加extrasdependency_groups等,允许在标记中表达额外和依赖组关系。
    • Example(示例):给出一个具体的锁文件示例。
    • Installation(安装):详细说明了从锁文件安装的步骤。
    • Semantic differences with requirements.txt files(与 requirements.txt 文件的语义差异):在安全性、明确支持的 Python 版本和环境、[tool]表等方面与 requirements 文件存在差异。
  • Backwards Compatibility(向后兼容性):由于没有预定义的锁文件格式,不存在明确的向后兼容性问题,具体由工具决定是否支持该 PEP。
  • Security Implications(安全影响):标准化锁文件格式有助于提高包装安装的安全性,但不能解决所有安全问题,如锁文件被篡改等。
  • How to Teach This(如何教授此内容):向用户解释锁文件的作用、支持的环境、单用途或多用途等概念。
  • Reference Implementation(参考实现):提供了一个概念验证的实现示例及其他相关工具。
  • Rejected Ideas(被拒绝的想法):包括记录依赖图、指定新的核心元数据版本、让安装器进行依赖解析等多个被考虑但最终被否决的想法及原因。
  • Acknowledgements(致谢):感谢参与讨论的人员及提供反馈的相关人员。
  • Copyright(版权):文档置于公共领域或 CC0-1.0-Universal 许可下。
阅读 10
0 条评论