原文英文,约5000词,阅读约需18分钟。
📝
内容提要
PEP 751 提出了新的 Python 依赖项锁定文件格式,旨在实现可重复的安装。该格式可读性强,支持逐个包或逐文件锁定,避免安装时的依赖解析,促进安全性和审计,确保依赖项的一致性。
🔎
延伸解读
两种锁定模式:按文件与按包
PEP 751 支持两种锁定方式:按文件锁定要求安装完全相同的文件,适合受控的开发与生产环境;按包锁定则列出可能适用的包和版本,由安装器根据环境标记独立判断,适合开源项目等环境不确定的场景。两者互斥,锁文件只能选择其一。
安全设计:哈希校验与审计便利
锁文件强制为每个文件记录哈希值,安装时校验,防止文件被篡改。格式采用 TOML 并集中关键信息,便于人工审计和查看差异。但 PEP 也指出,它无法防止锁文件本身被恶意修改或名称混淆攻击,建议将锁文件纳入版本控制并考虑签名。
对工具生态的影响
该格式将锁定器与安装器解耦,允许云服务商使用自己的安装器,用户可自由选择锁定工具。现有工具如 pip-tools、Poetry、PDM 可逐步适配。由于是草案,工具支持程度和迁移成本仍需观察,但标准化有望减少工具间的碎片化。
❓
Q&A
PEP 751 的主要目的是什么?
PEP 751 的主要目的是提出一种新的 Python 依赖项锁定文件格式,以实现可重复的安装。
PEP 751 支持哪些锁定场景?
PEP 751 支持逐文件锁定和包锁定两种锁定场景,适用于不同的安装需求。
PEP 751 使用什么文件格式?
PEP 751 使用 TOML 文件格式,确保人类可读性和机器生成性。
PEP 751 如何提高安全性?
PEP 751 通过确保依赖项的一致性和可审计性,防止供应链攻击,从而提高安全性。
PEP 751 的锁定文件设计有什么特点?
锁定文件的设计允许锁定器和安装器分开使用,促进了工具的灵活性,并避免安装时的依赖解析。
PEP 751 如何支持依赖项的审计?
PEP 751 的格式设计使得文件内容易于审计,用户可以在不运行工具的情况下理解将要安装的内容。
🏷️