【Linux】Linux服務器解決python3.7與openssl的低版本不兼容的問題

安裝了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。


參考博客

1、python3.7安裝後ssl問題

2、Linux服務器安裝python3.7

3、How to Compile and Install Python with OpenSSL Support?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章