新型Python环境与依赖管理工具——pipenv
文章目录
- pipenv介绍
- pipenv安装
- pipenv使用
- 创建虚拟环境
- 删除虚拟环境
- 安装依赖
- 查看包之间的依赖图
- 卸载依赖
- 在虚拟环境中执行命令
- shell环境下
- 通过requirements.txt安装依赖
- 导出requirements.txt文件
- 查看虚拟环境的路径
pipenv介绍
pipenv可以看做是pip和virtualenv的组合体,基于Pipfile和Pipfile.lock,更好地管理包之间的依赖关系。
Pipfile文件支持生成requirements文件,便于项目代码docker化管理。
Pipfile支持dev环境,可以在调试阶段安装多个调试工具,而不影响生产环境。
pipenv graph可以查看各个包的依赖关系图,卸载时会自动检查该依赖是否被其他包依赖来选择是否彻底删除。
Pipfile除了依赖清单,还可以固定pypi源地址、固定python版本,但Pipfile中的pypi源无法默认设置,每次都需要手动修改,pipenv install的包会强制使用Pipfile中的源。
pipenv shell和pipenv run会自动加载.env文件,将敏感信息保存到.env文件中,不用硬代码写入项目中。
pipenv安装和卸载包无需激活虚拟环境,直接在项目根目录下操作即可,即文件Pipfile同级目录下。
pipenv安装
pip install pipenv
默认情况下,Pipenv会自动选择虚拟环境的存放位置,Windows下通常为C:\Users\xxx\.virtualenvs\
,Linux下为./local/share/virtualenvs/
。
如果想将虚拟环境文件夹存放在项目目录内,则设置环境变量PIPENV_VENV_IN_PROJECT=1,也可以通过设置环境变量WORKON_HOME来自定义存放位置。
pipenv使用
创建虚拟环境
# 在项目根目录下,创建虚拟环境
# 会在项目根目录下生成Pipfile和Pipfile.lock文件
pipenv install
# 指定python版本,但需要已经安装了python3.8,否则会报错not found
pipenv --python 3.8
# 指定python路径,在Linux系统中非root用户不使用系统默认的python环境非常有用
pipenv --python "/xxx/xxx/python"
删除虚拟环境
# 删除虚拟环境
# 注意,只删除了虚拟环境存放的目录文件,Pipfile和Pipfile.lock并没有删除
pipenv --rm
安装依赖
# 在项目根目录下,即和Pipfile文件同级目录下
# 安装依赖
# pipenv install xxx时,如果当前目录下没有虚拟环境,pipenv会自动创建一个
# 新项目,可以不用手动pipenv install来创建虚拟环境
pipenv install flask
# 添加--skip-lock 可以跳过lock步骤
pipenv install numpy --skip-lock
# 等最后再使用pipenv lock统一执行lock操作
pipenv lock
# 添加--dev(或者-d),在开发环境中安装
pipenv install --dev numpy
pipenv install -d numpy
查看包之间的依赖图
pipenv graph
卸载依赖
pipenv uninstall flask
在虚拟环境中执行命令
# 在虚拟环境中执行命令
# 查看虚拟环境中已安装的依赖列表
pipenv run pip list
shell环境下
# 启动虚拟环境,但注意在命令行不会显示出虚拟环境
# 注意区分好操作是在虚拟环境中还是在系统python环境中
pipenv shell
# 退出
exit
通过requirements.txt安装依赖
pipenv install -r requirements.txt
导出requirements.txt文件
# 生产环境的依赖导出
pipenv requirements > requirements-pro.txt
# 生产环境+开发环境的依赖导出
pipenv requirements --dev > requirements.txt
# 开发环境的依赖导出
pipenv requirements --dev-only > requirements-dev.txt
查看虚拟环境的路径
pipenv --venv