首页 > 解决方案 > pipenv 的用例是什么?

问题描述

我正在阅读这个名为的新闪亮工具pipenv,但不明白这个工具的用例是什么。

  1. 要创建一个包,我仍然需要维护setup.pyrequirements.txt.
  2. 要创建开发环境,我很可能仍然需要toxvirtualenv.
  3. 要创建包或轮子,我仍然需要使用pip,因为pipenv 开发人员不关心这个功能

那么另一个具有不同语法的工具和配置文件有什么意义呢?解决什么问题pipenv

标签: pythonpipenv

解决方案


setup.py, tox, requirements,等的所有功能virtualenv对于分发需要针对多个 Python 版本以及可能的多个版本需求的库的人来说至关重要。

文档提到了这一点,但我会重申。Pipenv 面向应用程序开发人员和服务提供商。在这些情况下,您通常构建单个配置,并积极更新您的版本集。此外,您需要能够轻松回滚到之前的版本集。

你得到的requirements.txt是版本固定,所以你可以回滚,但是 pip 从不强制版本一致性,所以你可以构造一个requirements.txt具有矛盾版本的版本。它是 python,所以大多数时候你可以摆脱它,但拥有一致的版本确实可以缓解这类问题。

pip-tools可以构建一致的版本集,但您现在正在处理三个独立的实用程序pippip-toolsvirtualenv. 如果每个人都始终小心地运行所有三个以保持最新状态,那就太好了,当然他们不会。

pipenv 添加的是结合所有这三个的管理并始终强制执行版本一致性。

如果你做一些简单的事情git checkout,你所要做的就是运行pipenv sync --dev更新你的 virtualenv。

使用 pip,您必须完全清除 virtualenv 并重新运行pip install,因为 pip 不会删除现有的包。

如果您将 Pipfile 设置为 have "yourpackage" = {path=".", editable=true},那么您可以更新需求,setup.pypipenv update确保您的 virtualenv 相应更新,或报告错误。

需要明确的是,没有由 pipenv 单独处理的用例;你可以用其他工具来做。但它确实有一个受众群体,即应用程序开发人员,并且它通过为用户提供更加一致的体验而与众不同。我还发现,在实践中,它对库开发也很有帮助,因为测试套件本身就是一个应用程序。


推荐阅读