一个Python项目,依赖的模块甚至Python解释器版本,总是存在依赖关系。虽然有virtualenv或者venv模块来创建虚拟的Python环境,但是不同的项目要创建不同的环境,仍然不是很方便。
还好,requests的作者,写了pipenv这个“更人性化”的工具。
使用pipenv来管理项目的虚拟环境,非常简单。
初始化
我们可以在一个项目里面,执行
pipenv --python 3.10
来初始化一个项目的Pipfile。
而且贴心的是,如果这个项目里面有requirements.txt,它还会自动导入requirements.txt里面的依赖到Pipfile。
初始化完成以后,就可以在Pipfile来加入项目依赖的模块。
Pipfile
Pipfile文件是yml格式,非常简单易懂。
刚初始化完成以后如下:
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
[dev-packages]
[requires]
python_version = "3.9"
其中,[[source]]里的url可以指定pypi镜像地址。
最主要的是[packages]与[dev-packages],分别指的是项目运行依赖与编译依赖。
比如我们加入requests:
[packages]
requests = "==2.28.1"
[requires]里的python_version可以指定使用的Python解释器版本。
安装模块
有了Pipfile,我们就可以在项目里面执行
pipenv install
来安装Pipfile里加入的所有依赖模块。
另外,我们也可以不在Pipfile文件里加入,而是直接使用类似
pipenv install requests==2.28.1
的命令,来直接安装依赖模块,pipenv会自动把模块加入Pipfile并且安装模块。
在虚拟环境里执行命令
使用
pipenv run [command]
可以在安装的虚拟环境里执行命令。
启用虚拟环境的shell
按照官方手册,
pipenv shell
将会启用虚拟环境的shell,但是我尝试以后发现不成功,所以我采用了类似venv的手动启用方式。
在项目里执行:
source $(pipenv --venv)/bin/activate
如此,就每个项目自动维护了自己的虚拟环境。