yum源自帶的python版本依然停留在3.4,因此需要手動編譯安裝Python3.6以使用新特性。
測試環境: AWS RHEL7
Python版本: Python3.6.3
-2.安裝readline-devel
readline-devel可以解決python交互模式下出現^]]這種亂碼的情況。
yum install readline-devel
-1.更新zlib
yum源的zlib有安全問題,從www.zlib.net下載最新版本的zlib,更新編譯安裝。
有clang可以用clang編譯安裝
wget http://www.zlib.net/zlib-1.2.11.tar.xz #此處到zlib.net替換為最新的地址 tar xf zlib-1.2.11.tar.xz if type clang >/dev/null 2>&1; then CC=clang ./configure; else ./configure; fi make -j4 #替換為CPU邏輯核心數 make install #可能需要前面加sudo
0.之前是否編譯過OpenSSL
測試方法
ls /usr/local/ssl
若有文件,可跳過這一步。如果沒有文件,繼續:
從OpenSSL官網下載最新的安裝包並編譯安裝,安裝完成后執行
openssl version
確定安裝的版本。
1. 從Python.org下載最新版本Python的XZ壓縮包.
Python 3.6.3的地址: https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tar.xz
命令:
wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tar.xz
Python目前用clang編譯會出現一些奇怪的問題(我沒有成功)。因此此處用gcc編譯。
./configure --enable-shared --enable-optimizations --prefix=/usr/local/python36
此步完成后,需要修改Modules/Setup文件
vi Modules/Setup
VIM中輸入/SSL找到SSL所在行,解注釋掉以下內容:
SSL=/usr/local/ssl _ssl _ssl.c \ -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \ -L$(SSL)/lib -lssl -lcrypto
另外,_csv _md5 _sha1 _sha256 _sha512 _sha3 _socket也可以考慮被解注釋,都算實用的模塊。
如果現在Python的交互模式中正常使用,一定要解注釋readline! (之前要安裝readline-devel)
之后
make -j4 make install
