自用笔记 | Python与Openssl相关问题修复

提示:本文自用系统CentOS7,请根据个人问题情况适当调整解决办法命令


一、问题描述

WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

警告:pip配置了需要TLS/SSL的位置,但是Python中的SSL模块不可用。


二、问题分析

Python版本与Openssl版本需要相对匹配。
Python3.7之后的版本,依赖的Openssl,必须要是1.1或者1.0.2之后的版本,或者安装了2.6.4之后的libressl,Linux自带的Openssl版本过低。可能是当前Openssl版本过低。

三、解决方案

1.查看当前Openssl版本

openssl version

OpenSSL 1.0.2k-fips 26 Jan 2017
当前openssl版本为1.0.2k-fips ,然而对于安装Python 3.10.11来说,Openssl的版本过低,因此需要更新Openssl的版本才能满足要求。

2.更新Openssl

(1)确保您的系统已更新

#系统更新
sudo yum update

(2)安装依赖

#安装依赖
yum install gcc libffi-devel zlib* openssl-devel

如若部分依赖未安装成功,请单独安装重试

(3)下载源码包

下载合适版本的源码包

#下载合适的版本包
wget https://www.openssl.org/source/openssl-3.0.1.tar.gz

(4)解压源码包

#解压
tar -zxvf openssl-3.0.1.tar.gz

(5)进入解压后的目录

进入解压后的文件目录,切记一定要进入该目录才能继续执行后续命令

#进入文件目录
 cd openssl-3.0.1

(6)配置编译选项

其中--prefix是指定安装目录的,shared zlib库是在安装时寻找zlib库依赖的

#配置编译选项
./config --prefix=/usr/local/openssl

(7)编译安装

#编译安装
make && make install

(8)解决安装完还是旧版本

#查看当前Openssl版本
openssl version

OpenSSL 1.0.2k-fips 26 Jan 2017

发现还是旧版本!


①进入程序目录,测试新安装的Openssl
#运行
cd /usr/local/openssl/bin
./openssl

出现报错
./openssl: error while loading shared libraries: libssl.so.3:
cannot open shared object file: No such file or directory

查看目录/usr/local/openssl/lib64

#查看目录/usr/local/openssl/lib64
ls /usr/local/openssl/lib64

发现有libssl.so.3库文件,但是openssl程序却找不到,考虑是路径问题。
openssl程序会去 /usr/lib路径下去寻找库文件。

②拷贝Openssl库文件
#拷贝Openssl库文件到/usr/lib
cp -r /usr/local/openssl/lib64/* /usr/lib
③更新动态链接库
#更新动态链接库
ldconfig
④更新Openssl软链接
# 备份旧版openssl
mv /usr/bin/openssl /usr/bin/openssl.bak-$(date +%m%d)
 
# 新版openssl软链接到旧openssl位置
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
 
# /etc/ld.so.conf 文件记录了编译时使用的动态链接库的路径,告诉链接器去哪个路径下寻找链接时需要用到的库,如果找不到,就会提示链接错误。
echo "/usr/local/openssl/lib">>/etc/ld.so.conf
 
# ldconfig 命令用于在默认搜寻目录 /lib 和 /usr/lib 以及动态库配置文件 /etc/ld.so.conf 内所列的目录下,搜索出可共享的动态链接库。
ldconfig

(9)重新查看当前Openssl版本

#重新查看当前Openssl版本
openssl version

OpenSSL 3.0.1 14 Dec 2021 (Library: OpenSSL 3.0.1 14 Dec 2021)
当前Openssl版本为3.0.1 ,已满足Python 3.10.11的要求。


3.重新编译Python

(1)安装依赖

#安装编译工具和Python开发工具
sudo yum install gcc python3-devel

(2)下载源代码包

下载Python 3.10.11的源代码包

#下载Python 3.10.11的源代码包
wget https://www.python.org/ftp/python/3.10.11/Python-3.10.11.tgz

(3)解压源代码包

#解压源代码包
tar -zxvf python-3.10.11.tgz

(4)进入解压后的目录

#进入解压后的目录
cd python-3.10.11

(5)配置编译选项

#配置编译选项
./configure --prefix=/usr/local/python3.10 --with-openssl=/usr/local/openssl

(6)开始编译安装

#编译安装
make && make install

(7)清理不必要的文件

删除编译过程中生成的一些临时文件和目标文件

#清理编译临时文件
make clean

(8)设置环境变量

#设置环境变量
echo "export PATH=/usr/local/python3.10/bin:\$PATH" >> ~/.bashrc
#更新环境变量
source ~/.bashrc

(9)更新Python3软链接

①删除旧链接
rm -rf /usr/bin/python3
②创建新链接
ln -s /usr/local/python3.10 /usr/bin/python3

(10)检查Python版本

python -V
  • 27
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值