PIP安装第三方库报错SSL: CERTIFICATE_VERIFY_FAILED

本文介绍了解决在使用pip安装第三方库时遇到的SSL证书验证失败问题的方法。通过添加--trusted-host参数指定受信任的主机,成功解决了因证书验证失败导致的安装失败问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在安装一个第三方库时报如下错误

pip install --upgrade baostock

Could not fetch URL https://pypi.org/simple/baostock/: There was a problem confi

rming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max r

etries exceeded with url: /simple/baostock/ (Caused by SSLError(SSLCertVerificat

ionError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self si

gned certificate in certificate chain (_ssl.c:1045)'))) - skipping

当前python版本是3.7,网上查找说是python高版本需要验证ssl,可以添加--trusted-host domain来解决,于是赶紧尝试一下

pip install --trusted-host pypi.org --upgrade baostock

又报如下错误

Could not install packages due to an EnvironmentError: HTTPSConnectionPool(host=

'files.pythonhosted.org', port=443): Max retries exceeded with url: /packages/57

/f8/e909079851f6ea6685bb63ea143c66a0f4141fc3ce17e728ec908819ed54/baostock-0.8.5-

py3-none-any.whl (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFIC

ATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certifi

cate chain (_ssl.c:1045)')))

原来是另一个域名files.pythonhosted.org也是https的,也需要指定为trusted-host才可以,问题是同时指定两个域名为trusted-host该怎么写呢?网上找了半天没找到,经过自己一番摸索,发现如下的写法可以

pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org  --upgrade  baostock

如果是两个以上的域名以此类推,贡献给大家,希望对遇到同样问题的同学有所帮助。

### 解决 Windows 下 pip 遇到 SSL 证书验证失败的问题 当在 Windows 上使用 `pip` 安装 Python 包时,如果遇到 `SSL CERTIFICATE_VERIFY_FAILED` 错误,通常是因为 pip 无法找到有效的 CA (Certificate Authority) 证书来验证服务器的身份。这可能是由于系统缺少更新的根证书或网络配置问题。 #### 方法一:安装最新版本的 `certifi` Python 的 `requests` 库依赖于 `certifi` 来提供默认的信任库。通过升级 `certifi` 可以确保拥有最新的受信任CA列表: ```bash python -m pip install --upgrade certifi ``` 此命令会下载并安装最新版的 `certifi`,从而可能修复因过期或缺失的根证书引起的 SSL 认证失败[^1]。 #### 方法二:指定自定义的 CA Bundle 文件路径 有时即使有了最新的 `certifi`,仍然可能会碰到某些特殊环境下的认证问题。这时可以尝试手动指定期望使用的 CA bundle 文件位置: ```bash pip install somepackage --cert path\to\cacert.pem ``` 这里的 `path\to\cacert.pem` 是指向一个包含所需全部中间件和根证书的PEM格式文件的位置。对于大多数情况来说,可以直接使用由 `certifi` 提供的那个文件作为参数传递给 `--cert` 参数[^2]。 #### 方法三:禁用 SSL 验证(仅限开发测试) 虽然不推荐这样做,但在某些情况下为了快速解决问题可以选择暂时关闭 SSL 验证。请注意,在生产环境中绝对不应该这么做! ```bash pip install package_name --trusted-host pypi.org --trusted-host files.pythonhosted.org ``` 上述命令告诉 pip 不要对指定主机执行 SSL/TLS 验证,但这会使连接变得不再安全,并可能导致中间人攻击的风险增加[^3]。 #### 方法四:调整系统的日期时间设置 错误的时间也可能引发 SSL 握手过程中的校验异常。因此确认计算机当前时间和日期是否正确非常重要。可以通过如下方式修改系统时间为标准协调世界时(UTC): ```cmd date MMddyyHHmm ``` 例如将时间设为 2024 年 11 月 21 日下午 4 点整,则输入 `date 1121241600` 即可。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值