python - pipenv 的用例是什么?
问题描述
我正在阅读这个名为的新闪亮工具pipenv
,但不明白这个工具的用例是什么。
- 要创建一个包,我仍然需要维护
setup.py
和requirements.txt
. - 要创建开发环境,我很可能仍然需要
tox
和virtualenv
. - 要创建包或轮子,我仍然需要使用
pip
,因为pipenv 开发人员不关心这个功能
那么另一个具有不同语法的工具和配置文件有什么意义呢?解决什么问题pipenv
?
解决方案
setup.py
, tox
, requirements
,等的所有功能virtualenv
对于分发需要针对多个 Python 版本以及可能的多个版本需求的库的人来说至关重要。
文档提到了这一点,但我会重申。Pipenv 面向应用程序开发人员和服务提供商。在这些情况下,您通常构建单个配置,并积极更新您的版本集。此外,您需要能够轻松回滚到之前的版本集。
你得到的requirements.txt
是版本固定,所以你可以回滚,但是 pip 从不强制版本一致性,所以你可以构造一个requirements.txt
具有矛盾版本的版本。它是 python,所以大多数时候你可以摆脱它,但拥有一致的版本确实可以缓解这类问题。
pip-tools可以构建一致的版本集,但您现在正在处理三个独立的实用程序pip
:pip-tools
和virtualenv
. 如果每个人都始终小心地运行所有三个以保持最新状态,那就太好了,当然他们不会。
pipenv 添加的是结合所有这三个的管理并始终强制执行版本一致性。
如果你做一些简单的事情git checkout
,你所要做的就是运行pipenv sync --dev
更新你的 virtualenv。
使用 pip,您必须完全清除 virtualenv 并重新运行pip install
,因为 pip 不会删除现有的包。
如果您将 Pipfile 设置为 have "yourpackage" = {path=".", editable=true}
,那么您可以更新需求,setup.py
并pipenv update
确保您的 virtualenv 相应更新,或报告错误。
需要明确的是,没有由 pipenv 单独处理的用例;你可以用其他工具来做。但它确实有一个受众群体,即应用程序开发人员,并且它通过为用户提供更加一致的体验而与众不同。我还发现,在实践中,它对库开发也很有帮助,因为测试套件本身就是一个应用程序。
推荐阅读
- c# - httprequest 未发送到有效的服务器
- php - 如何在 laravel 中将两个变量放入刀片视图中
- regex - 我可以在 HTACCESS 中使用 IF 语句,以便我可以 301 仅重定向特定域(对于单个 docroot 上的多域)
- python - 如何在 django rest 框架中仅使用特定变体对象将项目添加到愿望清单?
- lvm - 如何计算所有精简卷大小的总和?
- itfoxtec-identity-saml2 - 声明输出为空,直到多次登录刷新
- wpf - 使 infragistics 的 XamRichTextEditor 对屏幕阅读器可见
- git - 请帮助我解决我的 git 分支中的问题
- sharepoint-2016 - 订阅设置服务应用程序卡在 SharePoint Server 2016 中启动
- vue.js - 如何在 vue js 中添加多个过滤器?