您的位置:

urllib3出现ImportError("urllib3 v2.0 only supports OpenSSL 1.1.1+, currently "f"the 'ssl' module is compiled with {ssl.OPENSSL_VERSION}. ""See: https://github.com/urllib3/urllib3/issues/2168")的解决方案

  发布时间:2025-04-01 23:17:02
问题原因是由于urllib3 v2.0要求OpenSSL版本必须是1.1.1或以上,而当前系统中的ssl模块使用较低版本的OpenSSL编译而成。解决方案包括升级系统中的OpenSSL版本、降级urllib3库版本或尝试使用其他兼容ssl模块的HTTP库。通过requests库可以绕过urllib3版本要求的限制。具体例子中提供了更新OpenSSL版本或降低urllib3库版本的方法。

问题原因

urllib3 v2.0 引发 Import Error 是因为 urllib3 v2.0 版本要求 OpenSSL 版本必须是 1.1.1 或以上,而当前的 'ssl' 模块是使用较低版本的 OpenSSL 编译而成,因此无法满足 urllib3 v2.0 版本对 OpenSSL 的要求。

解决方案

出现ImportError("urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with {ssl.OPENSSL_VERSION}")这一错误的原因是urllib3 v2.0版本要求OpenSSL版本必须是1.1.1以上,但当前系统中的ssl模块是使用较低版本的OpenSSL编译而成。要解决这个问题,通常有以下几种方法: 1. 升级系统中的OpenSSL版本到1.1.1以上,以满足urllib3 v2.0的要求。这样可以保持urllib3库与系统中的ssl模块兼容。 2. 如果无法升级系统中的OpenSSL版本,可以考虑降级urllib3库的版本到支持当前OpenSSL版本的较低版本。可以通过pip install urllib3==1.26.7这样的命令来安装兼容的urllib3版本。 3. 也可以尝试安装其他兼容当前系统ssl模块版本的HTTP库,例如requests库等,以满足项目的需求。 正确使用的例子:


import requests

response = requests.get('https://www.example.com')
print(response.status_code)

通过使用requests库,可以绕过urllib3版本要求的限制,实现对HTTP资源的请求和响应处理。

具体例子

出现ImportError("urllib3 v2.0 only supports OpenSSL 1.1.1+, currently "f"the 'ssl' module is compiled with {ssl.OPENSSL_VERSION}. ""See: https://github.com/urllib3/urllib3/issues/2168")这个错误是因为urllib3库的2.0版本要求使用的OpenSSL版本必须是1.1.1及以上,而当前系统中的ssl模块编译使用的OpenSSL版本过低所导致的。要解决这个问题,需要更新系统中的OpenSSL版本,或者降低urllib3库的版本为1.x系列。 正确使用的方法是: 1. 更新系统中的OpenSSL版本至1.1.1以上。具体更新方法取决于系统的发行版,可以通过系统包管理器(如apt、yum、brew等)来更新OpenSSL。 2. 降低urllib3库的版本为1.x系列。可以通过pip命令来安装特定版本的urllib3,例如:


   pip install urllib3==1.26.6
  1. 在代码中指定使用特定版本的urllib3。例如:

   import urllib3
   from urllib3.exceptions import InsecureRequestWarning

   urllib3.disable_warnings(InsecureRequestWarning)

   http = urllib3.PoolManager()
   response = http.request('GET', 'https://www.example.com')
   print(response.data)

通过以上方法,可以解决urllib3 v2.0版本与低版本OpenSSL不兼容的问题,确保代码正常运行。