已解决RNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python

avatar
作者
筋斗云
阅读量:0

pip升级报错:
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: pip in e:\anaconda\install_root\lib\site-packages (21.0.1)
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘SSLError(“Can’t connect to HTTPS URL because the SSL module is not available.”)’: /simple/pip/

Could not fetch URL https://pypi.tuna.tsinghua.edu.cn/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host=‘pypi.tuna.tsinghua.edu.cn’, port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError(“Can’t connect to HTTPS URL because the SSL module is not available.”)) - skipping

在使用 pip 安装 Python 包时,常会遇到 pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available 的警告或错误。这通常是由于 Python 环境中的 SSL 模块未正确安装或配置所致。本文详细介绍了常见的解决方法,包括确保正确安装 OpenSSL,必要时从源代码重新构建 Python 以包含 SSL 支持,验证 SSL 模块的可用性,通过更新 certifi 包来管理 CA 证书,以及临时忽略 SSL 验证(不推荐)。通过这些方法,您可以有效解决 pip 的 TLS/SSL 问题,确保包管理过程顺利安全。

在这里插入图片描述


🧑 博主简介:现任阿里巴巴嵌入式技术专家,15年工作经验,深耕嵌入式+人工智能领域,精通嵌入式领域开发、技术管理、简历招聘面试。CSDN优质创作者,提供产品测评、学习辅导、简历面试辅导、毕设辅导、项目开发、C/C++/Java/Python/Linux/AI等方面的服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:gylzbk

💬 博主粉丝群介绍:① 群内高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

在这里插入图片描述

【Python】解决Python报错:

在这里插入图片描述

问题背景

在使用 pip 安装 Python 包时,有时会遇到如下警告或错误:

WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple Requirement already satisfied: pip in e:\anaconda\install_root\lib\site-packages (21.0.1) WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘SSLError(“Can’t connect to HTTPS URL because the SSL module is not available.”)’: /simple/pip/ … Could not fetch URL https://pypi.tuna.tsinghua.edu.cn/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host=‘pypi.tuna.tsinghua.edu.cn’, port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError(“Can’t connect to HTTPS URL because the SSL module is not available.”)) - skipping 

这种情况通常意味着当前 Python 环境中的 SSL 模块未正确安装或配置,导致 pip 无法处理 HTTPS 资源。本文将详细介绍解决这一问题的多种方法,并提供具体的示例和错误代码。

为什么会出现这个警告?

pip 是 Python 的包管理工具,在安装包时,它默认使用 HTTPS 访问 PyPI 存储库。然而,当 SSL 模块在 Python 环境中未正确安装或配置时,会导致 pip 无法处理 HTTPS 请求,并引发警告或错误。

目录

  1. 确保安装了 OpenSSL
  2. 从源代码重建 Python 解释器
  3. 确认 SSL 模块在 Python 中可用
  4. 临时忽略 SSL 验证问题(不推荐)
  5. 更新和升级 certifi
  6. 示例
  7. 结论

1. 确保安装了 OpenSSL

Python 的 SSL 模块依赖于 OpenSSL 库的支持。首先确保系统上安装了 OpenSSL。

在 Linux 上安装 OpenSSL
sudo apt-get update sudo apt-get install openssl libssl-dev 
在 macOS 上安装 OpenSSL

使用 Homebrew 进行安装:

brew install openssl brew link openssl --force 

2. 从源代码重建 Python 解释器

如果你的 Python 是从源代码构建的,但在构建时没有找到适当的 OpenSSL 库,你需要重新构建 Python,并确保 OpenSSL 正确安装并包含在构建中。

安装依赖

确保构建 Python 所需的依赖已安装:

sudo apt-get install build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev  
从源代码重新构建 Python
# 下载 Python 源代码 wget https://www.python.org/ftp/python/3.x.x/Python-3.x.x.tar.xz tar -xf Python-3.x.x.tar.xz cd Python-3.x.x  # 使用 TLS 支持配置编译 ./configure --with-ssl  # 构建和安装 make sudo make install 

3. 确认 SSL 模块在 Python 中可用

启动 Python 解释器并尝试导入 ssl 模块以确认其可用性:

python -c "import ssl; print(ssl.OPENSSL_VERSION)" 

如果上述命令输出 OpenSSL 的版本信息,则表示 SSL 模块已正确安装。

4. 临时忽略 SSL 验证问题(不推荐)

在极少数情况下,可以选择临时忽略 SSL 验证问题,但这并不是推荐方法,因为它可能带来安全问题。

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

5. 更新和升级 certifi

certifi 包管理着 Python 中的 CA 证书集合,用于验证 SSL 连接。如果过时,可能导致 SSL 相关问题。

pip install --upgrade certifi 

示例

以下是一个完整的示例,展示如何解决 pip 的 SSL 问题。

模拟错误场景

执行以下命令可能会引发 SSL 模块未安装的错误:

pip install requests 

错误信息可能如下:

WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. 
解决方案
安装 OpenSSL
sudo apt-get install openssl libssl-dev 
编译并重新安装 Python
# 下载并解压 Python 源代码 wget https://www.python.org/ftp/python/3.x.x/Python-3.x.x.tar.xz tar -xf Python-3.x.x.tar.xz cd Python-3.x.x  # 配置编译环境,确保包含 SSL 支持 ./configure --with-ssl  # 构建和安装 make sudo make install 
验证安装

使用以下命令验证 SSL 模块是否正确安装:

python -c "import ssl; print(ssl.OPENSSL_VERSION)" 

您应看到类似如下的输出:

OpenSSL 1.1.1  11 Sep 2018 

结论

通过上述方法,您可以有效解决 pip 在需要 TLS/SSL 时的警告与错误问题。确保 OpenSSL 正确安装和配置,重建 Python 解释器以包含 SSL 支持,确认 SSL 模块在 Python 环境中的可用性,均能帮助您避免并解决 pip 与 SSL 相关的问题。仅在极少数情况中使用忽略 SSL 验证的方法,一般安全考虑下不推荐。

希望这些解决方案能够帮助您顺利进行包管理和依赖安装。如果在操作过程中遇到其他问题或有进一步疑问,欢迎随时交流和讨论!

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!