python3.9编译ssl模块踩坑记录

问题描述

python3.9安装完毕时发现未编译ssl模块导致pip无法使用

软件包:https://www.python.org/ftp/python/3.9.6/Python-3.9.6.tgz

系统:centos7.4

编译ssl模块

在python3.7+的版本之后configure自检文件的参数已经不支持“--with-ssl”,所以按照网络上的大部分说法加上参数的问题应该是只适用于低于此版本前的源码包。

支持此版本的ssl模块应该是

--with-openssl=/usr/local/openssl

升级openssl版本

由于python3.7+要求本机的openssl版本高于1.1版本

所以,根据一下命令编译安装新版本的openssl

#下载源码包
wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
#解压
tar -zxvf openssl-1.1.1g.tar.gz
#进入文件夹
cd openssl-1.1.1g/
#配置指定安装目录
./config --prefix=/usr/local/openssl
#编译安装
make && make install

备份旧版本的openssl

#备份
mv /usr/bin/openssl /usr/bin/openssl.old
mv /usr/include/openssl /usr/include/openssl.old
#新建连接
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
#库类文件
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
#重载配置
ldconfig 

重新编译python

进入python源码文件夹,重新编译

./configure --prefix=/usr/local/python3 --with-openssl=/usr/local/openssl --enable-shared
make && make install

python软连接

已经建立过可忽略

ln -s /usr/local/python3/bin/python3.9 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
echo "/usr/local/python3/lib" >/etc/ld.so.conf.d/python3.conf
ldconfig

总结

学会留意configure,cmake的报错信息。

多反思,多记录,多学习。发现问题,解决问题,总结经验。

标签: python, ssl, openssl

添加新评论