Python3.7需要openssl1.0.2以上版本, 而CentOS6默认只到openssl1.0.1,因此需要先额外安装openssl。
为了避免与系统已有openssl冲突,因此安装到其他路径:
wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz
tar -zxvf openssl-1.1.1a.tar.gz
cd openssl-1.1.1a
./config --prefix=/usr/local/openssl111 --openssldir=/usr/local/openssl111
make
make install
随后编译安装Python3,注意重点来了,在此之前需要进行一个操作:
echo "/usr/local/openssl111/lib" >> /etc/ld.so.conf.d/openssl111-x86_64.conf
ldconfig
这是因为如果不在这里新增lib的具体路径,在安装Python的时候,即便指定了--with-openssl=/usr/local/openssl111参数,由于安装脚本中OPENSSL_LIBS=-lssl -lcrypto,会继续到系统路径中尝试寻找openssl的库文件,结果make的时候依然会报 libssl.so.1.1 No such file or directory。
之后编译python即可:
./configure --with-openssl=/usr/local/openssl111
make clean
make
make install
#随后就可以正常使用ssl了
[root@localhost Python-3.7.1]# python3
Python 3.7.1 (default, Dec 10 2018, 15:08:09)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-23)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl
>>>