参考https://www.cnblogs.com/xshan/p/17532947.html
https://docs.python.org/3.10/using/unix.html#custom-openssl
1. 升级依赖包
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel gcc libffi-devel
2. 安装openssl(大于1.1.1版本)
find /etc/ -name openssl.cnf -printf "%h\n"
命令行输出 /etc/pki/tls,此为系统openssl.cnf所在目录,然后开始安装openssl
tar zxvf openssl-3.0.13.tar.gz /usr/local/bin
mkdir /usr/lib/openssl3.0.13
cd /usr/local/bin/openssl-3.0.13
./config --prefix=/usr/lib/openss3.0.13 --libdir=lib --openssldir=/usr/lib/openssl3.0.13
make -j1 depend
make -j8
make install_sw
3. 手动添加libssl.so.3库
ldconfig -p|grep libssl.so.3 #手动安装的情况下,未链接时应该找不到这个库
找到/etc/ld.so.conf,手动插入libssl.so.3的路径,我这里是/usr/lib/openss3.0.13/lib64/
ldconfig
ldconfig -p|grep libssl.so.3 #检查是否添加成功
libssl.so.3 (libc6,x86-64) => /usr/lib/openss3.0.13/lib64/libssl.so.3 #添加成功的输出
4. 安装python3
wget https://www.python.org/ftp/python/3.11.4/Python-3.11.4.tgz /usr/local/bin/
tar zxvf Python-3.11.4.tgz /usr/local/bin/
mkdir /usr/lib/python3.11.4
cd /usr/local/bin/Python-3.11.4
以下为重点部分!!!
找到Python安装夹中的Modules/Setup文件,打开,使用_ssl搜索,找到_ssl _ssl.c开头的一行后关掉注释,注意不要关错,改好之后如下所示
# OpenSSL bindings
_ssl _ssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) $(OPENSSL_LIBS)
这一步非常重要,如果不关掉注释,在安装时默认不安装ssl,后续无法使用pip安装包!!!
然后继续安装
./configure -C --with-openssl=/usr/lib/openss3.0.13/ --with-openssl-rpath-auto --prefix=/usr/lib/python3.11.4 #编译
make -j8 && make install #安装
这一步若报出'cannot find -lssl'错误,需要手动将openssl添加到环境变量
vi ~/.bashrc
export LIBRARY_PATH=/usr/lib/openss3.0.13/lib64:$LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/openss3.0.13/lib64
source ~/.bashrc
之后重新编译安装
5. 替换python3路径
which python3 #/bin/python3
which pip3 #/bin/pip3
mv /bin/python3 /bin/python3-bk
mv /bin/pip3 /bin/pip3-bk
ln -s /usr/lib/python3.11.4/bin/python3 /bin/python3
ln -s /usr/lib/python3.11.4/bin/pip3 /bin/pip3
python3 -V
整个安装流程就完成了,可以使用pip3安装包后在python中导入测试是否安装成功