踩坑
好久沒用 python
,最近重新下載安裝好 python
后發(fā)現(xiàn)用 pip
安裝第三方包一直失敗。經(jīng)過一番折騰發(fā)現(xiàn),如果報錯信息符合下面兩種,一般都是因為網(wǎng)絡(luò)連接時 SSL 認(rèn)證失敗導(dǎo)致的
-
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 ?
傳輸層安全性協(xié)議(英語:Transport Layer Security,TLS)及其前身安全套接層(英語:Secure Sockets Layer,SSL)是現(xiàn)在的 HTTPS 協(xié)議中的一種安全協(xié)議,目的是為互聯(lián)網(wǎng)通信提供安全及數(shù)據(jù)完整性保障
而較新版本的 python
內(nèi)置的 pip
以及用于網(wǎng)絡(luò)請求的 requests
、urllib3
包也較新,并且會使用 HTTPS 協(xié)議來下載新的軟件包
為什么會報錯
根據(jù)報錯信息可以發(fā)現(xiàn)錯誤的根源就在于 SSL,也就是沒有通過該安全協(xié)議的認(rèn)證,通常是由于開啟了網(wǎng)絡(luò)代理、VPN 或者網(wǎng)絡(luò)抓包等軟件的導(dǎo)致的
解決辦法
1. 臨時關(guān)閉代理、VPN 或者網(wǎng)絡(luò)抓包等軟件
最推薦的辦法是臨時關(guān)閉代理、VPN 或者網(wǎng)絡(luò)抓包等軟件,但是如果關(guān)閉后下載速度過慢可以嘗試后面兩種解決辦法
2. 通過鏡像的 HTTP 源來避免 SSL 認(rèn)證問題
由于是 SSL 是 HTTPS 協(xié)議需要的,因此我們可以切換至 HTTP 的鏡像站來進(jìn)行安裝下載
HTTPS 現(xiàn)在已經(jīng)比較普及,有不少鏡像源也早已經(jīng)切換至 HTTPS 協(xié)議,但部分鏡像源在支持 HTTPS 協(xié)議的而同時也還支持 HTTP 協(xié)議,下面簡單羅列幾個 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
修改文件內(nèi)容如下
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host = mirrors.aliyun.com
3. 切換至低版本 pip
經(jīng)過測試,當(dāng) pip
版本高于 20.3 后才會出現(xiàn)此錯誤,因此我們可以手動將 pip 版本降級至 20.2.4
或者 20.3b1
等較低版本即可文章來源:http://www.zghlxwxcb.cn/news/detail-411377.html
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 安裝已經(jīng)下載的 whl 文件
本文作者: ywang_wnlo
本文鏈接: https://ywang-wnlo.github.io/posts/2e7aa01a/
版權(quán)聲明: 本博客所有文章除特別聲明外,均采用 BY-NC-SA 許可協(xié)議。轉(zhuǎn)載請注明出處!文章來源地址http://www.zghlxwxcb.cn/news/detail-411377.html
到了這里,關(guān)于【日常踩坑】解決 pip 安裝第三方包時因 SSL 報錯的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!