pip--CERTIFICATE_VERIFY_FAILED
摘要
- 测试环境:macOS 13.7.1,Python 3.11.3
- 今天将
pip
升级(pip install --upgrade pip
)到24.3.1
版本后,通过pip install
命令安装依赖时会报错,比如:
1 | $ pip install certifi |
- 很奇怪,从
pip
自己的网站上下载依赖都会出现证书无法验证的错误。测试了一下,该问题只在macOS上遇到,其他平台没有遇到过。 - 先说结论,推荐使用第五种方法。
解决方法
1. --trusted-host
: 忽略证书验证
-
指定信任的证书域名,从而不进行验证证书,可以指定多个
1 | pip install certifi --trusted-host pypi.org --trusted-host files.pythonhosted.org |
2. --cert
: 指定证书文件
-
此时需要先下载证书文件,用Chrome浏览器打开https://pypi.org,按如下步骤导出证书文件
-
然后再执行如下命令进行安装
1 | pip install certifi --cert ~/Downloads/GlobalSign.pem |
3. pip.conf
: 配置全局证书文件
-
还是需要先下载证书文件,参考上面方法
-
pip
的配置文件位置因操作系统而异。可以通过以下命令找到配置文件路径:
1 | # 我使用的是 macOS |
-
pip
会从上面的路径中查找配置信息,我这里选择第二个,如果不存在就创建~/.pip/pip.conf
文件,内容如下:
1 | [global] |
-
配置好后可以通过如下命令查看配置信息
1 | $ pip config list |
-
然后再执行如下命令进行安装
1 | pip install certifi |
4.将证书添加到系统信任的证书存储
对于 macOS:
我设置后依旧报错,暂不清楚原因
-
打开
钥匙串访问
应用程序,并选择系统钥匙串
中的系统
(从网上查询说是要加入系统根证书
,但是我没有加入成功) -
文件
》导入项目
》选择证书文件
-
会提示你输入密码,如果证书不受信任,可以将证书设置为为始终信任该证书 (双击证书 》 信任 》 使用此证书时 》设置为
始终信任
)。
5.使用 Python 官方推荐的证书修复工具 (推荐)
-
这个方法最简单
-
运行这个脚本前需要先安装
certifi
,其主要用于提供权威的CA根证书列表
1 | $ pip install certifi --trusted-host pypi.org --trusted-host files.pythonhosted.org |
-
运行证书安装脚本(适用于 macOS 内置的 Python)
1 | # 首次运行依旧会报错,但实际上已经进行了修复,主要就是最后4步进行的操作 |
-
之后再运行
pip install
命令,就不会报错了
6.使用其它镜像源
-
该问题是因为Pypi软件仓库官网的证书文件存在问题导致的,只要我们不从官网下载就不会有问题。
-
在国内为了加速下载我们一般会使用国内的镜像源,例如阿里云的Pypi镜像源或者清华大学的Pypi镜像源,具体使用方法参考各自的官网说明即可。