我正在阅读这个名为 pipenv
的新工具,但不明白这个工具的用例是什么。
- 要创建一个包,我仍然需要维护
setup.py
和requirements.txt
。 - 要创建开发环境,我很可能仍然需要
tox
和virtualenv
。 - 要创建包或轮子,我仍然需要使用
pip
,因为 pipenv devs don't care about this feature
那么使用不同语法的另一个工具和配置文件有什么意义呢? pipenv
解决什么问题?
最佳答案
setup.py
、tox
、requirements
、virtualenv
等所有功能都很关键对于分发需要针对多个 Python 版本和可能的多个版本的需求构建和测试的库的人。
docs mention this ,但我会重申。 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 设置为具有 "yourpackage"= {path=".", editable=true}
,那么您可以在 setup.py
中更新需求> 和 pipenv update
将确保您的 virtualenv 得到相应更新,否则会报告错误。
需要明确的是,没有 pipenv 单独处理的用例;你可以用其他工具来做。但它确实有一个受众,即应用程序开发人员,并且它通过为用户提供更加一致的体验而与众不同。我还发现,在实践中,它对库开发也很有帮助,因为测试套件本身就是一个应用程序。
关于python - pipenv 的用例是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50109299/