python虚拟环境和包管理工具Pipenv详解
介绍
pipenv能够有效管理Python多个环境,各种包。
过去我们一般用virtualenv搭建虚拟环境,管理python版本,但是跨平台的使用不太一致,且有时候处理包之间的依赖总存在问题;
过去也常常用 pip进行包的管理,pip已经足够好,但是仍然推荐pipenv,相当于virtualenv和pip的合体,且更加强大。
pipenv创建虚拟环境后,会在工程目录生成如下两个文件:
- Pipfile:用于保存项目的python版本、依赖包等相关信息。该文件可以单独移放到其他项目内,用于项目虚拟环境的建立和依赖包的安装
- Pipfile.lock:用于对Pipfile的锁定
特点
- pipenv集成了pip,virtualenv两者的功能,且完善了两者的一些缺陷。
- 过去用virtualenv管理requirements.txt文件可能会有问题,Pipenv使用Pipfile和Pipfile.lock,后者存放将包的依赖关系,查看依赖关系是十分方便。
- 各个地方使用了哈希校验,无论安装还是卸载包都十分安全,且会自动公开安全漏洞。
- 通过加载.env文件简化开发工作流程。
- 支持Python2 和 Python3,在各个平台的命令都是一样的。
常用命令
虚拟环境相关
# 安装pipenv
pip3 install pipenv
# 创建虚拟环境
mkdir test
cd test
pipenv install --python 3.8.20
# 激活虚拟环境
pipenv shell
# 退出虚拟环境
exit
# 删除虚拟环境
pipenv --rm
# 查看工程根目录信息
pipenv --where
# 查看当前虚拟环境的信息
pipenv --venv
# 查看python解释器的信息
pipenv --py
# 查看环境变量选项
pipenv --envs
配置镜像源
1. 打开项目根目录下的 Pipfile 文件:
vim Pipfile
[[source]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
verify_ssl = true
name = "pypi"
2. 修改 Pipfile.lock 文件
vim Pipfile.lock
"url": "https://pypi.tuna.tsinghua.edu.cn/simple"
包管理相关
# 使用清华源安装numpy包
pipenv install numpy
# 如果有requirements.txt文件,可以使用下面命令安装requirements.txt列出的包
pipenv install -r path/to/requirements.txt
# 安装指定版本的numpy
pipenv install numpy~=1.22.3 #等价于 numpy==1.22.3
# 注意,包的版本号可以使用~=、==、>=、 <=、 >、 <、 != 等方式来限制
# 在pipenv中,提倡使用 ~= 标识符而不是 == 标识符,因为后者会阻止 pipenv 更新包
# 查看虚拟环境中安装的包信息
pipenv graph
# 包的删除
pipenv uninstall numpy