Pipenv
参考链接:https://juejin.im/post/6844903812755357703
Pipenv介绍
Pipenv会自动帮你管理虚拟环境和依赖文件,并且提供了一系列命令和选项来帮助你实现各种依赖和环境管理相关的操作。简而言之,它更方便、完善和安全。你可以通过Pipenv文档开头的介绍来了解它的详细特性。Pipenv的slogan是“Python Dev Workflow for Humans”。
Pipenv使用
- 安装Pipenv
1 | pip3 install pipenv |
- 创建虚拟环境
2.1 通过--python
指定python版本,如果想指定默认 Python 版本可以通过环境变量PIPENV_DEFAULT_PYTHON_VERSION
配置
1 | pipenv install --python 3.7 |
2.2 通过python解释器程序路径指定python
1 | pipenv --python /path/to/python |
2.3 指定虚拟运行环境在项目目录下创建
方法一:
执行pipenv
前先创建.venv
目录
1 | mkdir .venv && pipenv install requests --python 3.6 |
方法二:
配置PIPENV_VENV_IN_PROJECT
环境变量,如果想自定义这个目录需要通过环境变量WORKON_HOME
配置
1 | export PIPENV_VENV_IN_PROJECT=1 |
- 激活虚拟环境
1 | pipenv shell |
或直接运行
1 | pipenv run python3 main.py |
此外,Pipenv还提供了一个pipenv run命令,在该命令后附加的参数会直接作为命令在虚拟环境中执行,这允许你不必显式的激活虚拟环境即可在虚拟环境中执行命令。比如,pipenv run python会启动虚拟环境中的Python解释器。
在项目根目录下有 .env 环境配置文件时,激活虚拟环境同时会加载 .env 文件中的环境变量配置,如果不想使用这个功能可以通过配置 PIPENV_DONT_LOAD_ENV
变量来关闭它。
- 安装依赖到虚拟环境
1 | pipenv install *** |
- 记录依赖
Pipenv会自动帮你管理依赖。Pipenv会在你创建虚拟环境时自动创建Pipfile和Pipfile.lock文件(如果不存在),并且会在你使用pipenv install和pipenv uninstall命令安装和卸载包时自动更新Pipfile和Pipfile.lock。
- 在部署环境安装依赖
使用Pipenv只需要执行pipenv install,它会自动安装Pipfile中记录的依赖
1 | pipenv install |
- 区分开发依赖
使用Pipenv时,你只需要在安装pytest时添加一个–dev选项,它会自动被分类为开发依赖(写入Pipfile的dev-packages一节中)
1 | pipenv install pytest --dev |
在新的开发环境安装依赖时,也只需要在pipenv install命令后添加–dev选项即可一并安装开发依赖:
1 | pipenv install --dev |
- 更新包
查看有更新的包
1 | pipenv update --outdated |
更新所有依赖包
1 | pipenv update |
更新所指定依赖包
1 | pipenv update requests |
- 卸载包
1 | pipenv uninstall requests |
查看依赖关系
1 | pipenv graph |
- 在部署中使用pipenv
为了保证部署时安装的依赖版本与发布一致,不能使用 pipenv install
进行安装,需要加上 --deploy
参数。
1 | pipenv install -deploy |
如果不使用虚拟环境,还需要加上--system
参数
1 | sudo pipenv install --deploy --system |
Q&A
- 更换pip源
只需要更改Pipfile中更换对应的url即可。
1 | [[source]] |
除了修改Pipfile,你也可以在执行安装命令时通过–pypi-mirror选项指定PyPI源,比如:
1 | pipenv install --pypi-mirror https://mirrors.aliyun.com/pypi/simple |
设置环境变量PIPENV_PYPI_MIRROR效果相同。