CentOS7/RHEL7编译安装Python3.6(支持SSL)
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