macOS python urllib3 v2 only supports OpenSSL 1.1.1 問題與解決方法

本篇 ShengYu 紀錄在 macOS 執行 python 跑 requests 遇到的 urllib3 v2 only supports OpenSSL 1.1.1 問題與解決方法,今日在新 macOS 中執行 python 跑 requests 遇到以下問題,

1
2
3
4
% ./main.py
/Users/shengyu/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:35: NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.co
m/urllib3/urllib3/issues/3020
warnings.warn(

看起來似乎是說我的Python環境中使用的ssl模組版本(LibreSSL 2.8.3)不被urllib3版本2.x支持。urllib3版本2要求OpenSSL 1.1.1或更高版本。

用 pip3 查看我安裝 urllib3 的版本是 2.2.1

1
2
pip3 list | grep urllib3
urllib3 2.2.1

網路上查的結果有幾種方式,最後是採用降級安裝 urllib3 舊版本解決,這篇是說安裝 1.26.6 可以解決

降級 urllib3 版本

要降級 urllib3,你可以使用 pip 安裝指定的 urllib3 舊版本,

1
pip3 install urllib3==1.26.15

安裝後查詢一下 urllib3 版本

1
2
% pip3 list | grep urllib3
urllib3 1.26.15

或者是安裝 urllib3 2.0 以下的最新版

1
pip3 install 'urllib3<2.0'

使用 Python 虛擬環境來安裝 urllib3 舊版本

以下是如何建立虛擬環境並安裝相容版本的 urllib3:

1
2
3
python -m venv myenv
source myenv/bin/activate # 在 Windows 上使用 `myenv\Scripts\activate`
pip install urllib3==1.26.15

離開虛擬環境的話則是輸入

1
deactivate

無論在哪個作業系統上,deactivate 指令都可以退出當前的虛擬環境,使你回傳到全域的 Python 環境。

以上就是 macOS 執行 python 跑 requests 遇到的 urllib3 v2 only supports OpenSSL 1.1.1 問題與解決方法,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!