踩坑
好久沒用 python
,最近重新下載安裝好 python
后發現用 pip
安裝第三方包一直失敗。經過一番折騰發現,如果報錯信息符合下面兩種,一般都是因為網絡連接時 SSL 認證失敗導致的
-
check_hostname requires server_hostname
raise ValueError("check_hostname requires server_hostname")
ValueError: check_hostname requires server_hostname
-
EOF occurred in violation of protocol
Could not fetch URL https://pypi.org/simple/xxx/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/xxx/ (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:997)'))) - skipping
什么是 SSL ?
傳輸層安全性協議(英語:Transport Layer Security,TLS)及其前身安全套接層(英語:Secure Sockets Layer,SSL)是現在的 HTTPS 協議中的一種安全協議,目的是為互聯網通信提供安全及數據完整性保障
而較新版本的 python
內置的 pip
以及用於網絡請求的 requests
、urllib3
包也較新,並且會使用 HTTPS 協議來下載新的軟件包
為什么會報錯
根據報錯信息可以發現錯誤的根源就在於 SSL,也就是沒有通過該安全協議的認證,通常是由於開啟了網絡代理、VPN 或者網絡抓包等軟件的導致的
解決辦法
1. 臨時關閉代理、VPN 或者網絡抓包等軟件
最推薦的辦法是臨時關閉代理、VPN 或者網絡抓包等軟件,但是如果關閉后下載速度過慢可以嘗試后面兩種解決辦法
2. 通過鏡像的 HTTP 源來避免 SSL 認證問題
由於是 SSL 是 HTTPS 協議需要的,因此我們可以切換至 HTTP 的鏡像站來進行安裝下載
HTTPS 現在已經比較普及,有不少鏡像源也早已經切換至 HTTPS 協議,但部分鏡像源在支持 HTTPS 協議的而同時也還支持 HTTP 協議,下面簡單羅列幾個 pip
鏡像源
# 清華,僅支持 HTTPS
https://pypi.tuna.tsinghua.edu.cn/simple/
# 阿里,HTTP 和 HTTPS 均支持
http://mirrors.aliyun.com/pypi/simple/
https://mirrors.aliyun.com/pypi/simple/
# 豆瓣,HTTP 和 HTTPS 均支持
http://pypi.doubanio.com/simple/
https://pypi.doubanio.com/simple/
安裝時第三方包時可以參考如下命令:
pip install xxx-package -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
pip install xxx-package -i http://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com
如果想永久使用鏡像站,則需要修改配置文件,以 Linux 為例:
vim ~/.pip/pip.conf
修改文件內容如下
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host = mirrors.aliyun.com
3. 切換至低版本 pip
經過測試,當 pip
版本高於 20.3 后才會出現此錯誤,因此我們可以手動將 pip 版本降級至 20.2.4
或者 20.3b1
等較低版本即可
python -m pip install pip==20.2.4 -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
python -m pip install pip==20.2.4 -i http://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com
參考資料
- 【阿里雲】PyPI 鏡像
- 【CSDN】python pip 的安裝、更新、卸載、降級、和使用 pip 管理包
- 【CSDN】修改 pip 配置文件路徑、更改 pip 源、使用 pip 安裝已經下載的 whl 文件
本文作者: ywang_wnlo
本文鏈接: https://ywang-wnlo.github.io/posts/2e7aa01a.html
版權聲明: 本博客所有文章除特別聲明外,均采用 BY-NC-SA 許可協議。轉載請注明出處!