Python系列Bug修复:PyCharm控制台pip install报错 - 如何解决pip install网络报错 证书链包含自签名证书(Self-signed in chain)问题

在Python开发过程中,使用pip install安装第三方库时,经常会遇到各种报错。一个常见的问题是:在执行pip install时遇到如下错误:

SSL: CERTIFICATE_VERIFY_FAILED: certificate has expired (_ssl.c:1131)

或者:

pip install网络报错 证书链包含自签名证书(Self-signed in chain)

这类错误通常与SSL/TLS证书验证失败有关,可能是由于Python环境中的SSL证书配置错误或不完整,或者是网络连接到PyPI时遇到的证书问题。本文将详细介绍如何解决这个问题,帮助你顺利通过pip install过程。

【Python系列PyCharm控制台pip install报错】

一、问题描述与开发场景

1.1 开发场景

在开发Python项目时,pip是安装第三方库的常用工具。在使用PyCharm或命令行运行pip install时,Python会尝试通过HTTPS协议连接到PyPI(Python包索引)服务器并验证SSL证书。然而,当SSL证书链出现问题时,通常会抛出类似于“证书链包含自签名证书”的错误,导致pip install失败。

这种错误通常发生在以下场景:

  • 使用的操作系统或Python环境未正确配置SSL证书。
  • 网络中存在中间人攻击或网络代理,导致证书验证失败。
  • PyPI服务器返回的证书链包含自签名证书或过期证书。

二、环境介绍

2.1 开发环境

本文讨论的开发环境为:

  • Python版本:Python 3.x
  • 操作系统:macOS
  • IDE:PyCharm 2025

Python系列PyCharm控制台pip install报错

三、解决方案

3.1 检查证书链问题

在出现“证书链包含自签名证书”的问题时,首先需要确认Python是否正确安装了所需的根证书。在macOS上,Python通常使用系统默认的SSL证书库进行证书验证,但如果证书链中包含自签名证书或过期证书,SSL验证将失败。

你可以通过以下命令来检查Python环境中的SSL证书:

import ssl
print(ssl.get_default_verify_paths())

如果看到的是错误或路径不正确,说明Python的SSL证书配置存在问题。

3.2 更新证书

如果发现证书不完整或缺失,你可以手动更新Python环境中的根证书。macOS用户可以尝试以下操作:

  1. 打开“钥匙串访问”(Keychain Access)应用,检查系统中是否包含有效的根证书。
  2. 下载并安装certifi包,该包包含最新的根证书:
pip install --upgrade certifi

安装certifi后,pip会使用certifi提供的最新证书链进行验证。

3.3 通过pip禁用证书验证

在某些情况下,暂时禁用证书验证可以绕过这个错误,尤其是当你信任网络连接时。你可以通过以下命令来禁用证书验证:

pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host=files.pythonhosted.org <package_name>

这条命令告诉pip信任pypi.org等服务器,从而跳过SSL证书验证。注意:这种做法不推荐长期使用,因为它会降低网络安全性

3.4 使用国内镜像源

如果你在国内使用pip安装库时遇到证书问题,可以考虑使用国内镜像源,它们通常提供有效的证书配置,且访问速度较快。

编辑或创建pip配置文件,配置为国内镜像源:

macOS用户的pip.conf配置文件

~/.pip/pip.conf文件中添加如下内容:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

或者直接使用pip命令行安装时指定镜像源:

pip install <package_name> -i https://pypi.tuna.tsinghua.edu.cn/simple

3.5 更新Python和pip版本

有时,旧版本的Python或pip可能会导致证书验证问题。确保你的Python版本和pip版本都是最新的,尤其是pip可能存在的SSL/TLS支持问题。

更新pip

pip install --upgrade pip

如果你使用的是Python 3.6或更早版本,建议更新Python至3.7及以上版本,因为较早版本的Python可能不完全支持现代TLS协议。

3.6 配置代理

如果你在公司或学校等有代理的网络环境中,pip可能会遇到证书验证问题。你可以通过设置pip代理来解决这个问题。使用以下命令设置代理:

pip install <package_name> --proxy http://user:password@proxyserver:port

确保代理服务器能够正确处理SSL/TLS请求,并提供有效的证书。

3.7 手动安装证书

如果问题依然存在,你可以手动下载PyPI服务器的根证书,并将其添加到系统的证书存储中。在macOS上,可以将下载的证书文件添加到系统的“钥匙串”中。

四、总结

在遇到pip install时出现“证书链包含自签名证书”错误时,首先需要检查Python环境中的SSL证书配置,确保证书链完整且未过期。通过更新证书、使用国内镜像源或禁用证书验证等方法,你可以解决这一问题。

在解决过程中,建议始终使用最新的pip版本,确保环境中的证书库完整。只有通过可靠的SSL/TLS连接,才能保证Python包的安全安装。

🔔 更多Bug解决方案请查看 ==> 全栈Bug解决方案专栏


作者✍️名片
CSDN猫头虎万粉变现计划和账号流量诊断服务名片

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐