站点图标 AI技术聚合

Pipenv

pipenv简介

过去我们一般用 virtualenv搭建虚拟环境,管理python版本,用 pip进行包的管理。

在虚拟环境激活状态下,可以安装所需的依赖包,安装的依赖包会保存至项目虚拟环境目录下,不会污染系统全局环境

virtualenv的使用存在一定的问题:

pipenv能够有效管理Python多个环境,各种包,相当于 virtualenv 和 pip 的合体,且更加强大。

pipenv主要有以下特性:

下面快速介绍pipenv的基本使用,本文的使用的是windows下的Python3.7,对于其他平台同样适用。

pipenv安装

快捷键Win+R,输入cmd打开黑屏终端,输入代码

pip3 install pipenv

检测是否安装成功

pipenv --version

查看帮助指令

pipenv --help

创建虚拟环境

使用命令pipenv install,可在当前目录下创建 PipfilePipfile.lock 文件,在虚拟环境目录下新增一个虚拟环境

Pipfile文件: 用于保存项目的python版本、依赖包等相关信息 。

[[source]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
verify_ssl = true
name = "pypi"

[packages]
requests = "*"
pyyaml = "*"
Django = "*"

[dev-packages]
pytest = "*"

[requires]
python_version = "3.7"

[scripts]
django = "python manage.py runserver 0.0.0.0:8080"

Pipfile 文件可以复制到其他项目内,通过执行pipenv install命令, 根据这个 Pipfile 文件生成虚拟环境和依赖包的安装

Pipfile.lock文件: 通过hash算法将包的名称和版本,及依赖关系生成哈希值,保证包的完整性,除修改镜像源,非必要情况不对该文件进行修改。

默认路径存放虚拟环境

进入F盘下的 Project目录下,使用mkdir命令新增一个 Pro1文件夹,执行pipenv install命令

提示虚拟环境创建成功,进入F盘下的 Project/ Pro1目录下,可以发现该文件夹下新增了 PipfilePipfile.lock 文件

而虚拟环境创建的目录,则是位于C盘下,进入C:\Users\bobo\.virtualenvs目录下,可以发现目录下新增了一个 Pro1-sCuF4Q6F,该文件夹中的内容则是F盘 Project目录下Pro1项目对应的虚拟环境

指定目录存放虚拟环境

如果不想将虚拟环境的安装目录放到C盘,也可以指定目录存放

鼠标右击桌面此电脑,点击属性,点开高级系统设置,点击环境变量

新增一个环境变量,可以选择用户变量,也可以选择系统变量

变量名为WORKON_HOME,变量值则为虚拟环境的安装目录。(注意:新增后一定要一步步点击确定来关闭弹框,否则没有保存成功,会导致没有生效)

新打开一个黑屏终端界面,进入F盘下的 Project目录下,使用mkdir命令新增一个 Pro2文件夹,执行pipenv install命令

可以看到,Pro2项目对应的虚拟环境的安装目录,变成了F:\Envs\Pro2-lXQWMpIi

创建虚拟环境时指定当前项目路径存放

指定目录存放虚拟环境,便于统一管理所有的虚拟环境。

但如果想创建项目的时候就创建虚拟环境,且将虚拟环境放到项目路径下,也是可以做到的(将上一步中变量名为WORKON_HOME这一变量删去,否则会产生冲突)

新增一个环境变量,变量名为PIPENV_VENV_IN_PROJECT,值为 1

新打开一个黑屏终端界面,进入E盘下Envs目录下,执行pipenv install命令

这样,在创建虚拟环境时,就会在当前目录生成一个 .venv 文件夹,然后在该文件夹下安装虚拟环境
与上一种方式相比,这种方式的优点在于更方便管理单个项目的包依赖,不容易与其他项目的虚拟环境搞混

指定python版本创建虚拟环境

使用命令pipenv install --python +版本号,可指定python版本创建虚拟环境

博主本地python默认的是3.7版本,但还安装了python3.10版本

指定3.10版本进行安装,pipenv会自动去寻找python安装的目录,然后根据python.exe文件去创建虚拟环境

Windows系统下,基本安装的都是 python3.x版本;而有些Linux系统自带 python2.x 和 python3.x版本,Linux下需要指定默认的python版本,需使用下方的命令:

pipenv install --two           创建指定python2.x版本的虚拟环境
pipenv install --three         创建指定python3.x版本的虚拟环境

安装第三方库

pipenv兼容pip命令,同样使用 pipenv install + 包名的方式安装第三方库

使用pycharm打开 Pro2文件夹,可以发现默认加载了Pro2对应的虚拟环境

新建一个demo文件,此时Pro2对应的虚拟环境并没有安装 requests库,所以这里报错了

在pycharm的 Terminal终端输入命令

pipenv install requests

安装成功后,代码里就不会再报错了

若需要指定版本按钮,在命令尾部加上包的版本即可

pipenv install requests==2.31

修改镜像源

如果官方源站安装第三方库的速度很慢,安装失败,可以修改镜像源

pipenv兼容pip命令,所以也可以在命令加上参数

pipenv install requests -i https://pypi.tuna.tsinghua.edu.cn/simple

若想要永久该虚拟环境的镜像源,则需要打开项目目录下的PipfilePipfile.lock 文件,将sourceurl = "https://pypi.org/simple"链接内容修改为需要的镜像源,例如修改为清华的镜像源url = "https://pypi.tuna.tsinghua.edu.cn/simple"

安装到dev环境

安装调试工具、性能测试工具、python语法工具,这些内容仅在本地环境有用,生产环境不需要这些。

比如单元测试相关的包unittestpytest,只在开发阶段有用,为了和生产环境的包区分开来,可以通过命令 pipenv install --dev + 包名将其归类到【dev-packages】下。

例如安装pytest到开发环境

pipenv install --dev pytest

pipenv命令

pipenv兼容大部分的pip命令,所以 pip命令能实现的内容,也能通过pipenv命令实现

卸载命令

pipenv uninstall requests 			在项目所在虚拟环境中卸载requests包,并在Pipfile文件移除包名
pipenv uninstall --all 				在项目所在虚拟环境中卸载所有包,并在Pipfile文件移除包名
pipenv uninstall --all --dev		在项目所在虚拟环境中卸载所有dev环境的包,并在Pipfile文件移除[dev-packages]中的所有包名

更新命令

pipenv update requests 			在项目所在虚拟环境中更新requests包,并在Pipfile.lock文件中更新相应版本信息
pipenv update 	 				在项目所在虚拟环境中更新所有包,并在Pipfile.lock文件中更新相应版本信息
pipenv update --outdated		在项目所在虚拟环境中查看已过期的包的信息
pipenv lock						根据项目所在虚拟环境的Pipfile文件生成/更新Pipfile.lock文件中的依赖包信息

查看命令

pipenv --where			查看项目位置
pipenv --venv			查看虚拟环境位置
pipenv --py				查看虚拟环境python解释器位置
pipenv graph			查看依赖包信息

激活与退出虚拟环境

使用pipenv install 命令创建虚拟环境时,创建成功会默认激活虚拟环境

若想退出虚拟环境,可输入 exit 退出(仅适用于黑屏终端,pycharm默认打开项目就加载了虚拟环境,只能修改指定的虚拟环境)

目录下存在 PipfilePipfile.lock 文件,已创建过虚拟环境,可通过命令 pipenv shell进行激活

删除虚拟环境

快捷键Win+R,输入cmd打开黑屏终端,输入代码

pipenv --rm

注意:该命令无法在pycharm的Terminal终端执行成功,使用pycharm打开项目时,默认激活了项目下的虚拟环境,而使用exit命令退出虚拟环境,pycharm会关闭当前的Terminal终端

删除虚拟环境后,如果目录下仍存在 PipfilePipfile.lock 文件,可以通过pipenv install重新进行安装虚拟环境,且重新安装的虚拟环境,名称与删除前一致

运行python代码

虚拟环境已激活

在虚拟环境已激活的情况下,可直接执行python代码,例如执行demo文件中的 test.py 文件

python test.py

控制台会返回post请求的结果

再比如运行Django项目

python manage.py runserver 0.0.0.0:8080

此时,在浏览器中输入url http://127.0.0.1:8080/,可以看到项目已启动

虚拟环境未激活

不进入虚拟环境的情况下,也可以通过pipenv命令使用虚拟环境运行代码,使用pipenv run python xxx.py命令,执行python文件

pipenv run python test.py

黑屏终端返回post请求的结果

再比如运行Django项目( scripts中已添加自定义的脚本命令)

pipenv run django

此时,在浏览器中输入url http://127.0.0.1:8080/,可以看到项目已启动

requirements.txt 文件

pipenv可以像virtualenv一样使用命令生成requirements.txt文件

pipenv lock -r --dev >requirement.txt

命令中的--dev并不是说把 Pipfile文件中 [dev-packages]下的包导出,而是把所有依赖包导出。

pipenv还可以通过requirements.txt文件 安装依赖包

pipenv install -r requirement.txt

文章出处登录后可见!

已经登录?立即刷新
退出移动版