内容提要
Python打包工具的竞争主要在Pipenv和Poetry之间。Pipenv专注于应用依赖管理,而Poetry使用标准的pyproject.toml文件,适用于应用和库。Poetry在依赖解析和打包方面表现更佳,可能会取代setup.py。尽管Pipenv更受欢迎,但两者的竞争仍在继续。
延伸解读
定位差异:应用与库的分工
Pipenv 明确面向应用依赖管理,不适用于库;若用于库,仍需额外维护 setup.py 作为库配置文件。Poetry 则通过 pyproject.toml 同时覆盖应用和库,是否上传决定其用途。这一差异意味着选择工具前需先明确项目类型:纯应用可考虑 Pipenv,而需要发布库的项目可能更倾向 Poetry。
实现方式:封装与一体化
Pipenv 本质上是构建在 pip 和 virtualenv(或 pew)之上的封装,擅长整合现有工具并简化虚拟环境与安装流程。Poetry 则自行处理依赖解析和打包,使 pyproject.toml 有望取代 setup.py,呈现一体化特征。两者路径不同:前者依赖底层工具,后者试图统一配置与打包环节。
社区与标准:人气不等于定论
文章指出 Pipenv 因 Kenneth Reitz 的知名度和演讲更受社区关注,并被 PyPA 采用,GitHub 星标也远高于早期的 Poetry。但作者提醒 PyPA 并非权威,标准可能变化。因此,当前的人气优势并不保证最终胜出,长期走向仍由社区选择决定。
阅读提醒:原文的局限与更新
文章末尾作者承认,本文写作时未深入审查两个工具,可能存在偏见。作者后来成为 Pipenv 维护者,并另写新文进行更深入比较。因此,读者应将本文视为 2018 年时点的个人观察,而非最终结论;若需选型,建议参考后续更新和最新文档。
Q&A
Pipenv和Poetry的主要区别是什么?
Pipenv专注于应用依赖管理,而Poetry使用标准的pyproject.toml文件,适用于应用和库。
为什么Poetry可能会取代setup.py?
因为Poetry在依赖解析和打包方面表现更佳,pyproject.toml可以替代setup.py。
Pipenv的受欢迎程度如何?
Pipenv更受欢迎,拥有超过11000个GitHub星标。
Pipenv和Poetry的社区支持情况如何?
Pipenv因Kenneth Reitz的知名度而更受社区关注,但两者的竞争仍在继续。
Pipenv需要维护哪些文件?
Pipenv需要维护setup.py文件作为库的配置文件。
Poetry的设计理念是什么?
Poetry旨在简化依赖解析和打包,使用标准化的配置文件。