提示:本文自用系统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的源代码包文章来源:https://www.toymoban.com/news/detail-844493.html
#下载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)清理不必要的文件
删除编译过程中生成的一些临时文件和目标文件文章来源地址https://www.toymoban.com/news/detail-844493.html
#清理编译临时文件
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
到了这里,关于自用笔记 | Python与Openssl相关问题修复的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!