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")的解决方案
问题原因
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
- 在代码中指定使用特定版本的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不兼容的问题,确保代码正常运行。