Pipenv是Kenneth Reitz在2017年1月发布的Python依赖管理工具,现在由PyPA维护。你可以把它看做是pip和virtualenv的组合体,而它基于的Pipfile则用来替代旧的依赖记录方式(requirements.txt)。
在这篇文章里,我将会以旧的依赖管理工作流程作为对比来介绍Pipenv的基本用法,更详细的用法可以参考Pipenv文档,或是Kenneth Reitz在PyCon 2018的演讲《Pipenv: The Future of Python Dependency Management》。
为什么使用 Pipenv
Pipenv会自动帮你管理虚拟环境和依赖文件,并且提供了一系列命令和选项来帮助你实现各种依赖和环境管理相关的操作。简而言之,它更方便、完善和安全。你可以通过Pipenv文档开头的介绍来了解它的详细特性。Pipenv的slogan是“Python Dev Workflow for Humans”,作为人类,当然应该尝试一下……
首先使用pip安装Pipenv及其依赖
$ pip install pipenv
然后将目录更改为包含你Python项目的文件夹,并启动Pipenv
$ cd my_project
$ pipenv install
这将在项目目录中创建两个新文件 Pipfile 和 Pipfile.lock , 如果项目不存在,则为项目创建一个新的虚拟环境.如果你添加 -two 或 -three标志到上面的最后一个命令, 他分别使用Python2 或 3 来初始化你的项目.否则使用默认版本的Python.
Pipfile 包含关于项目的依赖包的信息, 并取代通常在Python项目中使用的 requirements.txt 文件. 如果你在具有requirement.txt 文件的项目中启动了Pipenv, 则在把它从项目删除之前, 应该使用Pipenv安装该文件中列出的所有依赖包
要为你的项目安装Python 包,请使用install 关键字.例如,
$ pipenv install beautifulsoup4
将安装当前版本的Beautiful Soup 包. 可以使用 uninstall 关键字以类似的方式删除
$ pipenv uninstall beautifulsoup4
可以通过更新Pipfile.lock来冻结软件包名称及其版本,以及其依赖关系的列表。 这可以使用lock关键字完成的,
$ pipenv lock
如果另一个用户克隆存储库,可以添加Pipfiles到你的Git存储库,这样他们只需要在他们的系统中安装Pipenv,然后键入,
$ pipenv install
Pipenv会自动找到Pipfiles,创建一个新的虚拟环境并安装必要的软件包。
通常有一些Python包只在你的开发环境中需要,而不是在你的生产环境中,例如单元测试包。 Pipenv将使用–dev标志保持两个环境分开。
$ pipenv install --dev nose2
nose2,但也将其关联为只在开发环境中需要的软件包。 这很有用,因为现在,如果你要在你的生产环境中安装你的项目,
$ pipenv install
默认情况下不会安装nose2包。 但是,如果另一个开发人员将你的项目克隆到自己的开发环境中,他们可以使用–dev标志,
$ pipenv install -dev
并安装所有依赖项,包括开发包。
为了激活与你的Python项目相关联的虚拟环境,你可以使用简单地shell命令,比如
$ pipenv run which python
将在你的虚拟环境中运行which python命令,并显示与你的虚拟环境相关联的python可执行文件所在的路径。 这是在虚拟环境中运行你自己的Python代码的一个简单方法,
$ pipenv run python my_prject.py
如果你不想每次运行Python时都输入这么多,你可以在shell中设置一个别名,例如,
$ alias prp = "pipenv run python"