pipenv的用例是什么?

时间:2018-04-30 23:01:30

标签: python pipenv

我正在阅读这个名为pipenv的新工具,并且无法理解此工具的用例。

  1. 要创建包,我仍需要维护setup.pyrequirements.txt
  2. 要创建开发环境,我很可能仍然需要toxvirtualenv
  3. 要创建包裹或轮子,我仍然需要使用pip,因为pipenv devs don't care about this feature
  4. 那么另一个具有不同语法的工具和配置文件的重点是什么? pipenv解决了什么问题?

1 个答案:

答案 0 :(得分:2)

setup.pytoxrequirementsvirtualenv等所有功能对于分发需要针对多个版本构建和测试的库的人员至关重要Python的版本以及可能的多个版本的版本。

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

你使用requirements.txt得到的是版本固定,所以你可以回滚,但是pip永远不会强制执行版本一致性,所以你可以构造一个具有矛盾版本的requirements.txt。它是python,所以大部分时间你都可以逃脱它,但是拥有一致的版本可以减轻这类问题。

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

pipenv增加的是将所有这三者的管理结合起来并始终强制执行版本一致性。

如果您执行的操作与git checkout一样简单,您只需运行pipenv sync --dev即可更新您的virtualenv。

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

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

要明确的是,没有单独由pipenv处理的用例;你可以用其他工具做到这一点。但它确实有一个受众,应用程序开发人员,并通过为用户提供更一致的体验来区分它。我也发现,在实践中,它对图书馆开发也很有帮助,因为测试套件本身就是一个应用程序。