新一代Python项目环境与依赖管理工具
之前一直用的是python -m venv <虚拟环境名称>来创建虚拟环境,这样做的缺点是太麻烦了,因为创建之后还要进去激活虚拟环境。更麻烦的是还要手动创建依赖(requirements.txt),更新依赖。
看到这个pipenv之后发现应该挺好用的,准备试一试。
- 安装Pipenv
pip install pipenv
- 创建虚拟环境
pipenv install
Pipenv会自动为你创建虚拟环境,自动生成一个随机的虚拟环境目录名。
- 显式激活虚拟环境
pipenv shell
此外,Pipenv还提供了一个pipenv run命令,在该命令后附加的参数会直接作为命令在虚拟环境中执行,这允许你不必显式的激活虚拟环境即可在虚拟环境中执行命令。比如,pipenv run python会启动虚拟环境中的Python解释器。
- 安装依赖到虚拟环境
pipenv install flask
事实上,对一个新项目来说,你不必手动使用pipenv install来创建虚拟环境。当使用pipenv install xxx直接安装依赖包时,如果当前目录不包含虚拟环境,Pipenv会自动创建一个。
- 记录依赖
使用Pipenv时,什么都不必做,Pipenv会自动帮你管理依赖。Pipenv会在你创建虚拟环境时自动创建Pipfile和Pipfile.lock文件(如果不存在),前者用来记录项目依赖包列表,而后者记录了固定版本的详细依赖包列表,会在你使用pipenv install和pipenv uninstall命令安装和卸载包时自动更新Pipfile和Pipfile.lock。
Pipfile 文件中记录了3件事情:
1.包从哪里下载的
2.需要下载哪些包, * 表示始终下载最新版本, dev-packages 表示专用于开发阶段使用的包。
3.Python 版本是多少
Pipfile.lock 文件详细记录了这些包的信息,包括这个包的hash值多少,还有包所依赖的其他包有哪些。
把这些信息写在 Pipfile 文件中的好处是,当我们把项目部署到正式环境时,不再需要一个一个去安装了,直接执行 pipenv install 就会自动创建虚拟环境的同时,把 Pipfile 中包都安装好。
- 项目环境迁移部署
把原环境的Pipfile Pipfile.lock文件拷贝到新环境中,直接如下执行即可
pipenv install
- 区分依赖
pipenv install pytest --dev
仅安装在开发环境
- 列出当前虚拟环境的依赖包
pipenv graph
9.生成依赖包
pipenv lock -r > requirements.txt
- 使用 requirements.txt 来安装包依赖
pipenv install -r requirements.txt
- 删除虚拟环境
pipenv --rm
- vscode 配置pipenv虚拟环境
https://segmentfault.com/a/1190000017558652
13.有时候手动改了 Pipfile 之后需要手动执行一下 lock 命令来生成新的 Pipfile.lock
pipenv lock