导读:Python发布了新的标准包锁文件格式,遵守PEP 751标准。
Python 团队正在开始采用 PEP 751,它指定了应用程序包之间的依赖关系,从此无需动态依赖关系解析即可实现可重复的安装。
Python 核心开发人员 Paul Moore 这样表示说:
“这是完全的、彻底的最终接受,而并非临时的”,他还希望避免在新标准实施和使用之前出现延迟。话虽如此,并非所有现有的包管理器都可以取代其现有的本地锁定文件格式。新标准将使用.toml,它已经受到包括 Python 在内的编程语言的广泛支持,它的一个好处是特别容易阅读。
微软首席软件工程师 Brett Cannon 也是核心Python的开发人员,他是 2021 年提出PEP 665 的人之一。Python 应用程序依赖于模块(也称为包),这些模块通过导入系统使用。为了使应用程序安装可重现,每次安装时都必须使用这些包的相同版本。好处是包括可靠性和更高的安全性,通过指定包依赖项和版本来实现。
在 PEP 665 中发现的问题是并没有标准的 Python 锁文件,而是多个工具(例如 PDM、Poetry、pip-tools 和 Pipenv)都在使用自己不同的格式,这给开发者和托管服务提供商带来了很大的复杂性。
PEP 665 提案于 2022 年初被拒绝,根据核心开发人员 Paul Moore 的拒绝信息说,其原因是社区希望“更好地了解我们真正想要什么” 。
一个关键问题是 Python wheel(二进制包)与 sdist(源分发)之间存在区别,后者可在没有 wheel 时使用。如果使用 sdist,则很难保证可重复性。PEP 665 根本不支持 sdist,所以 Poetry 团队表示无法支持它。
2024 年 7 月,Cannon 提出了PEP 751,其中特别提到了 sdist,并为用户提供了选择加入或退出使用的选项。2025 年 1 月,Python社区对 PEP 751 的修订进行了广泛讨论,社区试图找到一种可以被 Poetry、PDM 和 uv(用 Rust 编写的包管理器)等工具都能采用的解决方案。
关于这方面的消息,开发者们也都议论纷纷。“所有工具作者都表示他们可以并且会将 PEP 实现为导出格式,”Cannon 说,但这并不意味着他们会将其作为唯一的锁定文件格式。uv 的创建者 Charlie Marsh表示说, “今天,PEP 751 风格的 pylock.toml 文件不足以取代 uv.lock”,但会添加对导出的支持。
当已有广泛使用的竞争标准时,标准化就比较困难。Python 社区坚信官方标准的价值,但要让所有打包工具都在内部使用它仍然是一个挑战,而且需要进一步的修订。
各位同学怎么看?欢迎转发、留言~
作者:洛逸
本文为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。