Pipenv投入使用后的回顾

2018 年 5 月 23 日 Python程序员

如果你没有在reddit上订阅/r/Python频道,那么你可能不知道有关Python Packaging Authority、pipenv和poetry各自现今状况的话题讨论。pipenv和poetry的作者及PyPA的代表的参与使得这场讨论变得更为有趣。如果你不介意在诸多无用的情绪化表达中寻找有趣的观点,那就请便吧。

目前python的打包处理很糟糕,应该没有人否认这一点。既然存在这个问题,那么就有很多试图解决这种混乱状况的尝试。Pipenv是第一个迈出这一步的,同时它也获得了很大的进步,但它并不适合所有人。同时它也不适合所有项目——比如库。

我使用Pipenv已经有一段时间了,我还试着将它引入到我们团队的代码库中。自2017年11月左右开始,我们一直在使用Pipenv,2017年5月,我个人在GitHub上创建了我的第一个项目,以下是我的经验:

多环境问题

在编号#368的问题中我首先讨论了多环境(例如测试了2.7和3.6)。我解决了我的项目中使用问题,但是#1050仍然在讨论这个问题。太长不看版如下:支持多环境与Pipenv的(因此也是Pipfile的)对不同应用环境可重用的理念背道而驰。所以如果你想对库使用Pipfile,那你运气不太好。这意味着许多项目不能使用Pipenv进行依赖管理。

细述的版本是关于Kenneth Reitz(Python社区中的令人惊奇的一部分,以及我的个人灵感)的过度直率和对社区需求不够开放的态度。我建议彻读1050号问题以便对此事形成自己的看法。虽然他的做法是可以理解的,但也可以理解为什么有些人觉得Pipenv很糟糕。尽管我也讨厌这样,但实在没办法脱离评论作者来评论Pipenv,由于我会再次提到Kenneth,我先提前道歉。

稳定性问题

不幸的是,我不止一次地经历这样的事:明明前一天还运行得很好的测试在第二天工作时报错了。这一般都是Pipenv造成的问题。虽然该团队几乎总能快速解决问题,但如果我们因此遇到很大的bug并不得不部署修补程序,我们的品牌形象将会受损,而我们没多少时间来定位问题所在,只能将Pipenv固定至以前的版本以希望它能正常工作。

如果这些是正确发布过程中的必经的错误,我不会太苛刻,然而事实是发布程序本身就有问题。因为根本没有所谓的发布程序。Kenneth(这里是第二次提到)经常会在主分支上连续修改并提交。我们也经常做这样的事,连续进行十来次修改并提交或者恢复之前的更改。然而,我们并不是所有人都是在维护一个拥有将近11000颗星的GitHub项目,这还是一个每月170000次下载的项目,也是一个由python.org正式推荐的项目。我们都知道,依靠这一工具的人还是挺多的,而且很多人是不得不依靠的。

下一次出现这样的另一个问题时,我只会将Pipenv固定在最后一个工作版本上,我应该从一开始就这样做,直到我被迫更新。

优点

  • Pipfile和Pipfile.lock确实优于requirements.txt,很大程度上。

  • 虽然我一开始不喜欢它,但在单个工具中内置flake8和安全检查非常棒

  • 从私人存储库(指定)安装非常有效。在Pipfile中指定存储库而不是在系统中的某处替换一个dotfile文件很方便

  • 创建一个新的Pipfile非常简单

  • 向Pipenv新用户介绍很容易

  • 安装索引、git库的混合体很容易...

  • 通过--sequential,它实际上是确定性的,正如宣传的那样

  • Virtualenv更容易理解

  • 依赖可以安装到系统中(例如在Docker中)——正如我们的案例

  • 团队中从未有人建议不用Pipenv——这一评价实际已经挺高的了

结论

Pipfile并不完美,我不知道它会不会逐渐完美,但我对它感到还算满意,并且我将它推荐给其他团队。但是,我不认为pipenv是最终目标。

作为一个社区我们需要一个适用于库和应用程序的工具。 而这正是Pipenv特别不想成为的。Python社区最需要的是做出选择(2还是3)。正如Python之禅所说:“应该有一个——而且最好只有一个——显而易见的方法。”如果我们最终有多种工具用于多种目的,人们总会滥用所有这些工具的,无论如何,事情并不会很美好。

...Poetry呢?

我也希望我知道。自从我开始着手我们团队现在的(GDPR相关)项目以来,我没有太多时间再实验了。但它看起来确实挺不错的。



英文原文:https://ogmcsrgk5.qnssl.com/vcdn/1/优质文章长图2/pipenv-review-after-using-in-production-a05e7176f3f0.png
译者:β


登录查看更多
0

相关内容

Python是一种面向对象的解释型计算机程序设计语言,在设计中注重代码的可读性,同时也是一种功能强大的通用型语言。
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
224+阅读 · 2020年3月22日
机器学习速查手册,135页pdf
专知会员服务
338+阅读 · 2020年3月15日
【2020新书】数据科学:十大Python项目,247页pdf
专知会员服务
212+阅读 · 2020年2月21日
【模型泛化教程】标签平滑与Keras, TensorFlow,和深度学习
专知会员服务
20+阅读 · 2019年12月31日
2019中国硬科技发展白皮书 193页
专知会员服务
81+阅读 · 2019年12月13日
2019年机器学习框架回顾
专知会员服务
35+阅读 · 2019年10月11日
教程 | 从零开始搭建『深度学习』GPU开发环境
机器学习算法与Python学习
8+阅读 · 2019年10月28日
ACL 2019年度回顾:自然语言处理发展趋势
人工智能学家
5+阅读 · 2019年8月19日
Pipenv: 吹嘘自己无所不能,实际上没什么卵用
Python程序员
3+阅读 · 2018年12月21日
排查中国千人计划学者,美对华科技限制再次升级
算法与数学之美
6+阅读 · 2018年9月19日
为什么 Python 更适合做 AI/机器学习?
计算机与网络安全
10+阅读 · 2018年3月18日
2017年十大最受欢迎机器学习Python库
全球人工智能
3+阅读 · 2017年12月29日
为个人深度学习机器选择合适的配置
AI研习社
3+阅读 · 2017年12月2日
PyTorch vs. TensorFlow之一个月用户体验
深度学习世界
3+阅读 · 2017年10月21日
从零开始:深度学习软件环境安装指南
机器之心
6+阅读 · 2017年10月2日
Arxiv
110+阅读 · 2020年2月5日
Arxiv
8+阅读 · 2018年4月8日
Arxiv
7+阅读 · 2018年1月24日
VIP会员
相关VIP内容
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
224+阅读 · 2020年3月22日
机器学习速查手册,135页pdf
专知会员服务
338+阅读 · 2020年3月15日
【2020新书】数据科学:十大Python项目,247页pdf
专知会员服务
212+阅读 · 2020年2月21日
【模型泛化教程】标签平滑与Keras, TensorFlow,和深度学习
专知会员服务
20+阅读 · 2019年12月31日
2019中国硬科技发展白皮书 193页
专知会员服务
81+阅读 · 2019年12月13日
2019年机器学习框架回顾
专知会员服务
35+阅读 · 2019年10月11日
相关资讯
教程 | 从零开始搭建『深度学习』GPU开发环境
机器学习算法与Python学习
8+阅读 · 2019年10月28日
ACL 2019年度回顾:自然语言处理发展趋势
人工智能学家
5+阅读 · 2019年8月19日
Pipenv: 吹嘘自己无所不能,实际上没什么卵用
Python程序员
3+阅读 · 2018年12月21日
排查中国千人计划学者,美对华科技限制再次升级
算法与数学之美
6+阅读 · 2018年9月19日
为什么 Python 更适合做 AI/机器学习?
计算机与网络安全
10+阅读 · 2018年3月18日
2017年十大最受欢迎机器学习Python库
全球人工智能
3+阅读 · 2017年12月29日
为个人深度学习机器选择合适的配置
AI研习社
3+阅读 · 2017年12月2日
PyTorch vs. TensorFlow之一个月用户体验
深度学习世界
3+阅读 · 2017年10月21日
从零开始:深度学习软件环境安装指南
机器之心
6+阅读 · 2017年10月2日
Top
微信扫码咨询专知VIP会员