1. 程式人生 > >centos6.8安裝python3.7無法import _ssl

centos6.8安裝python3.7無法import _ssl

轉載https://www.jianshu.com/p/ace9be0b08ed

 

公司運維提供的伺服器是centos6.8,打算在上面裝python3.7,結果費盡周折,按照網上的步驟python3.7能成功安裝,但是import ssl卻報找不到_ssl模組的錯誤:

import _ssl             # if we can't import it, let the error propagate
ImportError: No module named _ssl 

在網上搜了各種方法,有說修改python3.7安裝檔案中的Setup.dist,將SSL部分註釋掉,但自己註釋掉仍然不行。有說重新裝openssl庫,配置python3.7的時候指定openssl,然而也是不行。反正網上各種部落格說的方法都不萬能,在我這都不行。之前安裝的時候只是把安裝步驟的linux命令敲一遍,也不明白是什麼意思,為了徹底找出原因所在,自己反覆折騰了2天,每條命令、每個引數選項都去搞明白到底是啥意思,最終終於把ssl這個模組搞定了,下面就把centos6.8安裝python3.7的正確步驟寫下。另,如果沒有特殊要求,直接裝python3.6就行,python3.6在centos6.8下傻瓜式安裝就不會有此問題。
言歸正傳,安裝步驟如下:
1、安裝依賴庫:

yum install -y zlib zlib-dev openssl-devel sqlite-devel bzip2-devel libffi libffi-devel gcc gcc-c++

注意,這裡yum源安裝的openssl的最高版本是1.0.1:

[[email protected] /]# rpm -qa | grep openssl
openssl-1.0.1e-57.el6.x86_64
openssl-devel-1.0.1e-57.el6.x86_64 

但是python3.7安裝要求openssl最低版本是1.0.2,所以不能用yum安裝的openssl,需要額外下載1.0.2的openssl來安裝。

2、安裝1.0.2版本的openssl

  • 下載1.0.2版本的openssl
wget http://www.openssl.org/source/openssl-1.0.2j.tar.gz
  • 解壓openssl原始碼,並安裝
tar -zxvf openssl-1.0.2j.tar.gz
./config --prefix=$HOME/openssl shared zlib
make && make install

注意!openssl配置是用config,而不是configure,另外openssl編譯安裝依賴zlib動態庫,所以一定要shared zlib。

3、設定環境變數LD_LIBRARY_PATH

echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/openssl/lib" >> $HOME/.bash_profile source $HOME/.bash_profile 

這一步一定要有!!LD_LIBRARY_PATH環境變數主要用於指定查詢共享庫(動態連結庫)時除了預設路徑之外的其他路徑。當執行函式動態連結.so時,如果此檔案不在預設目錄下‘/lib’ and ‘/usr/lib’,那麼就需要指定環境變數LD_LIBRARY_PATH

4、下載並解壓python3.7,並安裝,一定要指定剛才安裝的1.0.2版本的openssl!!!

wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz tar -zxvf Python-3.7.0.tgz ./configure --prefix=$HOME/Py37 --with-openssl=$HOME/openssl make && make install 

ok,至此python3.7就安裝完了,來檢驗下ssl模組能否被匯入吧:

[[email protected] bin]# ./python3
Python 3.7.0 (default, Sep 16 2018, 14:12:43) [GCC 4.4.7 20120313 (Red Hat 4.4.7-23)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import ssl >>> import _ssl >>> 

至此ok了!折騰了近2天,終於搞定了。



作者:Ivanli1990
連結:https://www.jianshu.com/p/ace9be0b08ed
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。