Why it took 4 years to get a lock files specification
7 months ago
- #Python
- #LockFiles
- #Packaging
- 锁文件记录了代码的所有依赖项和安装细节,包括源码树、源码发行版(sdist)和轮子文件(wheel)
- 锁文件可分为多用途型(跨平台通用)和单用途型(针对特定平台及依赖环境)
- 依赖项来源包括:pyproject.toml中的project.dependencies基础依赖、project.optional-dependencies可选依赖(extras)以及dependency-groups依赖组
- 依赖说明符支持版本限制和平台特定条件
- 创建锁文件需要解决NP完全问题,这是由依赖解析的复杂性决定的
- 作者致力于设计一种机器可写、人类可读、安全高效且与安装器无关的格式
- 初始提案(PEP 665)因缺乏对源码发行版的支持及构建后端依赖锁定机制而被否决
- PEP 665流产后,作者独立开发了mousebender和packaging.metadata等概念验证工具
- 2024年uv工具的出现曾使标准化进程复杂化,但最终促成关键工具(uv/Poetry/PDM)达成共识
- 经过多轮草案和深入讨论,PEP 751于2025年3月获批,引入了pylock.toml标准
- PDM、uv和pip已开始采用pylock.toml,验证了该规范的实用性
- 作者回顾了这个高强度项目,并表示准备退出大型打包工具开发工作