1. 程式人生 > >python3中SSLError錯誤處理

python3中SSLError錯誤處理

www 存在 自己 param 解壓 cti 3.6 usr Pycharm使用

在deepin中安裝了python3.6,安裝路徑為/usr/local/python36,然後通過deepin自帶的python2.7的pip安裝了virtualenv:

sudo pip install virtualenv

創建python3.6的虛環境:

virtualenv -p /usr/local/python36/bin/python3 .venv/python36

切換到python36虛環境:

. /home/yanwei/.venv/python36/bin/activate

執行pip安裝一些軟件包:

sudo pip install paramiko

正常完成安裝

這個時候打開pycharm,設置好python虛環境配置,發現pycharm使用的python36的虛環境中並不存在剛安裝的paramiko模塊。一度以為通過sudo執行的pip安裝,非root用戶無權訪問。google來baidu去,都沒找到想要的答案。只到自己忽然反應過來執行如下操作:

sudo which pip 
# 返回如下:
/usr/local/bin/pip

這個pip的路徑並不是我想要的/home/yanwei/.venv/python36/bin/pip這個路徑,這是deepin默認的python2.7的pip路徑,也就是說我在開始執行sudo pip install paramiko的時候,其實是將paramiko安裝在了系統默認的python2.7下面,所以pycharm裏找不著這個模塊。

於是我執行如下操作:

sudo /home/yanwei/.venv/python36/bin/pip install paramiko

卻拋出異常如下:

pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘SSLError("Can‘t connect to HTTPS URL because the SSL module is not available.",)‘: /simple/pip/

具體解決方法參考如下文檔:
https://www.cnblogs.com/mlgjb/p/7976561.html

大概意思就是python3在安裝的過程中無法使用openssl,根據網上的一些博客的做法,要進入到python源碼包解壓後的那個目錄下的Modules/Setup,註意Setup這個文件,只有在python完成安裝一次之後才會生成這個文件。

將下圖中標識的四行取消註釋,然後再重新編譯即可:
技術分享圖片

執行編譯安裝:

sudo make
sudo make install

另外,還需要保證系統安裝好了openssl及openssl的開發庫:

sudo apt install openssl libssl-dev

至此,重新執行sudo /home/yanwei/.venv/python36/bin/pip install paramiko,然後在pycharm中查看paramiko模塊是否安裝,這個時候已經恢復正常。

python3中SSLError錯誤處理