centos6 編譯安裝python3.7.4


由於工作需要,目前centos6自帶的python2.7已不滿足現有需求,特此需要安裝python3.7.4

千萬記得要安裝openssl 不然有可能遇到pip install 提示ssl問題

安裝依賴庫

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

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

由於系統的openssl是1.0.1的版本,對於python3.7太老了,需要更新為openssl1.0.2或者libressl2.64(不含)以后的版本,所以這里從libressl官網下載libressl源碼,編譯生成庫文件代替系統的openssl1.0.1

wget https://www.openssl.org/source/openssl-1.1.0k.tar.gz
./config --prefix=/usr/local/openssl shared zlib
make
make install

 查看openssl是否安裝成功

 /usr/local/openssl/bin/openssl version
 /usr/local/openssl/bin/openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
這是由於openssl庫的位置不正確造成的。

[root@xxxx]# find / -name libssl.so.1.1
/opt/pkg/openssl-1.1.0k/libssl.so.1.1
/usr/local/openssl/lib/libssl.so.1.1

ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1

ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

[root@xxxx]# /usr/local/openssl/bin/openssl version     安裝成功
OpenSSL 1.1.0k 28 May 2019

 設置環境變量LD_LIBRARY_PATH

echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/openssl/lib" >> /etc/profile
這一步一定要有!!LD_LIBRARY_PATH環境變量主要用於指定查找共享庫(動態鏈接庫)時除了默認路徑之外的其他路徑。當執行函數動態鏈接.so時,如果此文件不在缺省目錄下‘/lib' and ‘/usr/lib',那么就需要指定環境變量LD_LIBRARY_PATH

 編譯安裝python3.7.4

wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz
tar zxf Python-3.7.4.tgz
cd Python-3.7.4
./configure --prefix=/usr/local/python37 --with-openssl=/usr/local/openssl/
make
make install

 軟連接

 cd /usr/bin/
ln -s /usr/local/python37/bin/python3.7 python3
 ln -s /usr/local/python37/bin/pip3.7 pip3

  

[root@xxx]# python3
Python 3.7.4 (default, Jul 16 2019, 10:00:59)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-23)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl          成功
>>>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM