Linux Python3.7 執行 pip 時 SSLError 錯誤

在用 Centos7 安裝 Python3.7 一般來說都沒有任何的問題

只要從原始碼編譯安裝就可以直接使用 Python3.7 了

但是如果要用 pip 安裝(搜尋)套件的時候就會發生錯誤

pip-sslerror

學長之前有問過我這個問題,想不到自己也碰到了

雖然學長的做法是把 Python 的版本下降到 3.6 解決這個問題

但是因為 3.6 跟 3.7 在 async/await 的寫法上不一樣

3.7 的寫法比起 3.6 更精簡,所以才想要在自己的伺服器上配置 Python3.7

python多版本
(很多 Linux 自帶 Python2 而 3 之後的版本都要自行安裝)

然後如果編譯安裝會跳出以下提示

Python build finished successfully!
The necessary bits to build these optional modules were not found:
_ssl _uuid 
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
Could not build the ssl module! 
Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host(). 
LibreSSL 2.6.4 and earlier do not provide the 

然後查了 Centos7 的 openssl 版本….

恩…很好 1.0.2k 照理說是符合的

結果就是文字遊戲,上述的提示是指 openssl 版本要”超過” 1.0.2 或 1.1

並不是說最低要求 1.0.2 or 1.1

所以從 openssl 下載最新的版本 openssl-1.1.1

# 下載 openssl-1.1.1 原始碼
wget http://www.openssl.org/source/openssl-1.1.1.tar.gz

# 下載編譯時所需要的套件
yum install -y zlib zlib-devel

# 解壓編譯下載的 openssl 
tar zxf openssl-1.1.1.tar.gz 
cd openssl-1.1.1 
./config shared zlib 
make 
make install 
mv /usr/bin/openssl /usr/bin/openssl.bak 
mv /usr/include/openssl /usr/include/openssl.bak 
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl 
ln -s /usr/local/ssl/include/openssl /usr/include/openssl 
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf 
ldconfig -v

到這邊應該就已經把 openssl 的版本更新到 1.1.1

接下來就再次執行 pip

成功執行pip

pip 安裝成功,這樣 Python3.7 就正常運作拉~~


© 2018. All rights reserved.