Python 包管理工具性能大比拼:pdm、pipenv、poetry、pip-tools

你好,我是坚持分享干货的 EarlGrey,翻译出版过《Python编程无师自通》、《Python并行计算手册》等技术书籍。

如果我的分享对你有帮助,请关注我,一起向上进击。

本周有赠书福利,详见文末

Python生态中有很多优秀的包管理工具,如pdm、poetry、pipenv等,可以帮助我们解决包管理的问题。它们有着不同的特点和优势,也有着不同的使用方式和学习曲线。

有国外Python开发者好奇各自的性能表现,于是写了一个基础性能测试脚本,利用 Github Actions 来实现,每隔 6 个小时自动跑一遍脚本。

e0d25504fdf1087f36d9e4fb3f371760.png

测试对比项目

这个项目只选了 4 个相对流行的包管理工具:pdm、pip-tools、poetry和pipenv。

项目作者的测试用例,使用的是 Sentry 的 requirements.txt 文件。理由是因为 Sentry 这个项目大部分是开源的,而且足够庞大、复杂,能够把不同工具链的性能给真正测试出来。另外,Sentry 的依赖中,至少有一个依赖是需要在本地进行编译的,而不都是下载并安装二进制或纯Python包。

Sentry是一个跨平台的应用错误跟踪系统,专注于错误报告。它可以帮助开发者和运维人员快速发现和解决应用程序中的bug和异常。它支持多种编程语言和框架,提供了丰富的错误信息和分析功能,以及集成了多种通知和项目管理工具。

进行性能测试对比的操作包括:

  • 工具安装:安装工具本身需要多长时间?

  • 导入依赖:将所有依赖项添加到项目中需要多长时间?

  • 锁定:生成锁定文件(解析依赖链、锁定所有依赖项、获取发布的软件包哈希值)需要多长时间?

  • 安装:安装所有依赖包需要多长时间(同时使用冷缓存和暖缓存)?

  • 更新:更新所有依赖包需要多长时间?

  • 添加软件包:向依赖关系列表中添加一个新的包(包括安装和重新锁定)需要多长时间?

最新测试结果

作者还将测试结果自动收集汇总,部署到了 Github Pages。Github 页面显示,最新的脚本执行结果是 1 月 15 日新生成的(撰写本文的日期)。

b9932500e75d64c2832c68f00a9a081a.png

在这里和大家分享一下具体的数据:

安装

该测试测量从有效锁文件安装所有软件包所需的时间。测试同时使用冷软件包缓存(不缓存软件包)和热软件包缓存(缓存所有必要软件包)。

35f7dca3bea470fa0a15680b07268fa9.png

锁定

该测试测量从软件包列表生成锁文件所需的时间。

d31678e20d9965b66e429cb9bf3813be.png

更新

该测试测量更新和安装锁文件中所有依赖项所需的时间。

cd589974a460ea84ccdd678f2871c872.png

添加软件包

该测试测量添加新软件包和重新生成锁文件所需的时间。

66b382d8b4766ce303945c100f510854.png

工具安装

该测试使用工具官方文档中推荐的方法测量安装工具本身所需的时间。

c962b896d52e9f47ec41da1dcd301b55.png

结语

对于测试的结果,大家仅供参考即可,没必要做过多解读,不要用上面的数据去拉踩某个工具。

至于最终选择使用哪个工具,建议综合性能、特性、社区和个人喜好等多种因素考虑。

参考资料:

  • https://lincolnloop.github.io/python-package-manager-shootout/

  • https://lincolnloop.com/insights/python-package-manager-shootout/

- EOF -

读者福利

赠送新书,刚刚上架!由「 北京出版社」赞助提供 ,感兴趣的朋友推荐入手一本。

本次开奖时间为 2023.1.20 20:00

为了避免中奖后失联,提前加我微信号:wallstreetxt 。

留言点赞(1本)

本文留言需要根据文章的内容留言会更大可能被精选,留言点赞数「第一」,至少点赞数大于3个,可获得一本,从下面3本任选一本,包邮到家 。

按照出版社赞助的要求,本篇推文达到 1600 可再加赠 1本,之后每增加 800 阅读加赠 1 本。

可选新书

8f3a2aac2361156e75e9417191087623.jpeg

量化交易新模式:一本专注于帮助交易师在AI时代实现晋级、提高效率的图书。书中介绍了如何使用 ChatGPT 来完成量化交易的各个环节,并通过实战案例展示了ChatGPT在实际量化交易中的应用方法。

648a94be25a55c2b73470f3fca0d5549.jpeg

金融大数据分析新模式:一本专注于帮助金融大数据分析师在AI时代实现晋级、提高效率的图书。书中介绍了如何使用 ChatGPT 来完成金融大数据分析的各个环节,并通过实战案例展示了ChatGPT在实际金融大数据分析中的应用方法。

9654d5b78bc9b7077ccd25a9f625f833.jpeg

小白学Python编程的入门经典教程:知识讲解+老师答疑+上机实训+思考与练习+综合实战+ChatGPT全能助手,零基础学会Python既快速又简单。

推荐阅读  点击标题可跳转

1、Python 项目工程化最佳实践

2、Python 可以比 C 还要快!

3、streamlit,一个超强的 Python 库

4、豆瓣8.9分的C++经典之作,免费送!

5、Python 3.12 版本有什么变化?

回复下方「关键词」,获取优质资源

回复关键词「 pybook03」,领取进击的Grey与小伙伴一起翻译的《Think Python 2e》电子版

回复关键词「书单02」,领取进击的Grey整理的 10 本 Python 入门书的电子版

??关注我的公众号??

告诉你更多细节干货

cd284dd9470d4af9672f8366622fe555.jpeg

欢迎围观我的朋友圈

??每天更新所想所悟