安裝了Python3.7之後,遇到的一個很麻煩的坑就是與系統自帶的ssl版本不兼容, Python3.7需要的openssl的版本爲1.0.2
或者1.1.x,這個requirements在config Python3.7的時候使用“
--with-ssl”選項會報出。
Could not build the ssl module!
Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().
Linux系統默認的openssl版本通常是:OpenSSL 1.0.1,可以使用命令查詢系統的openssl版本:
openssl version
當前版本低於Python3.7的需求,會導致一些運行錯誤,比如pip3 install命令的失敗,故需要進行openssl版本升級。
(1)下載較高版本的openssl
https://www.openssl.org/source/openssl-1.1.1-pre8.tar.gz
(2)解壓安裝包
tar -xvzf openssl-1.1.1-pre8.tar.gz
(3)編譯安裝
cd openssl-1.1.1-pre8
./config --prefix=/usr/local/openssl no-zlib # 新版openssl將安裝在/usr/local/openssl目錄下
make
make install
這樣的話,新版本的openssl已經安裝完畢,但是需要進行一些環境配置才能夠繼續使用。
來到/usr/bin目錄下,可以發現已經有一個openssl可執行文件,這個就是系統自帶的低版本,這裏我們對它進行一個備份。
(4)備份原openssl配置
備份是個好的習慣,至少在安裝新版本出錯的時候可以回滾舊版本繼續使用。
mv /usr/bin/openssl /usr/bin/openssl_bak # backup
mv /usr/include/openssl/ /usr/include/openssl_bak
(5)備份好之後就可以爲新版openssl配置軟連接了
# 將安裝好的openssl的openssl命令軟連到/usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
# 軟鏈到升級後的libssl.so
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/local/lib64/libssl.so
# 將安裝好的openssl命令軟連到/usr/bin/openssl
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
(6)最後再修改下系統配置即可
# 寫入openssl庫文件的搜索路徑
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf # 需要root權限
# 使修改後的/etc/ld.so.conf生效
ldconfig -v
(7)驗證安裝結果
Done.
==還是不能work==繼續解決。。。
升級完新版本的openssl之後,需要對Pyhton3.7進行重新編譯並更新軟連接才能繼續使用Python3.7。
參考博客