【python】linux系统python报错“ssl module in Python is not available”

一、问题现象

1.1 执行pip命令报错

pip安装时遇到openssl问题,没办法安装第三方库

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

1.2 导入import  ssl 报错

直接执行python,进入python, 输入import  ssl ,也会报相似的错误。 

正常情况下,是这样的,导入成功无报错

1.3 执行python脚本报错

二、问题原因

根据出错信息提示分析:ssl模块不可用。

pip默认的安装源https://pypi.org/simple/,采用的是 HTTPS协议,连接是需要SSL库加密和解密。出错信息显示,你的Python没有所需的ssl模块。官网下载的Python已经内建了ssl模块,应该不会出现这个问题。

2.1 openssl版本低

系统版本centos7.4,其中openssl的版本为OpenSSL 1.0.2k-fips,而python3.11需要的openssl的版本为1.1.x及以上,需要对openssl进行升级,并重新编译python3.11(yum 安装的openssl 版本都比较低)。现在有些高版本的linux,openssl已经是1.1.x版本以上,不会出现该opensll版本问题。

2.3 openssl配置问题

已经源码编译安装了高版本的openssl,由于没有配置软链接、和openssl库的位置,导致的问题。

三、解决方案 

3.1 版本低-做OpenSSL升级

3.1.1 直接yum安装高版本的openssl 

yum install -y openssl openssl-libs  openssl-devel openssl-static 
#查看版本
openssl version

3.1.2 源码安装openssl升级(推荐)

wget  https://www.openssl.org/source/old/1.1.1/openssl-1.1.1q.tar.gz
tar -zxvf openssl-1.1.1q.tar.gz
cd openssl-1.1.1q
./config --prefix=/usr/local/openssl
make -j8
make install#设置软连接到新版本openssl
ln -sf /usr/local/bin/openssl /usr/bin/openssl
ln -sf /usr/local/include/openssl /usr/include/openssl
#openssl库位置配置
ln -sf /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -sf /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1echo "/usr/local/lib/" >> /etc/ld.so.conf
ldconfig -vopenssl version
openssl version -a

但是安装好之后,还可能出现以下问题

openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory ,这是由于openssl库的位置不正确造成的。

解决方法:以root用户下执行:

ln -s    /usr/local/lib64/libssl.so.1.1          /usr/lib64/libssl.so.1.1
ln -s    /usr/local/lib64/libcrypto.so.1.1    /usr/lib64/libcrypto.so.1.1

 我本机安装的情况:


3.2 配置问题-补充配置

#设置软连接到新版本openssl
ln -sf /usr/local/bin/openssl /usr/bin/openssl
ln -sf /usr/local/include/openssl /usr/include/openssl#openssl库位置配置
ln -sf /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -sf /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

看到有的网上说做环境变量配置,但是 感觉做软链接更清晰、简单点。就不谈环境变量配置了。

四、本人采取的方式(不推荐)

参考博主方法https://www.cnblogs.com/miyuanbiotech/p/12307875.html ,也能解决,

但是它是在编译时,可以直接将ssl模块编译进去。如果在安装其他版本的python到本机,不将openssl高版本编译进去,还是不能用。 所以推荐使用上面(三、解决方案)的方法解决该问题。

现在有些高版本的linux,openssl已经是1.1.x版本以上,不会出现该opensll版本问题。

4.1 包下载和安装路径配置

wget -c https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz
tar -xvf Python-3.8.1.tgz
cd Python-3.8.1
./configure --prefix=/my/path/python/
# 配置环境后先别急着编译

4.2 Modules/Setup文件修改

SSL=/my/path/openssl  #改为刚安装的ssl路径
_ssl _ssl.c \-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \-L$(SSL)/lib -lssl -lcrypto

4.3 编译安装

make && make install

此时如果直接make编译,仍会报如下类似错误:./python: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory generate-posix-vars failed make: *** [pybuilddir.txt] Error 1 缺少库文件,说明libssl.so.1.1这个库没有读取到。解决方法:有的是以root身份添加软链接。有的将openssl库加入环境变量。这个博主选择了后者。

#执行该命令 添加环境变量
export LD_LIBRARY_PATH=/my/path/openssl-1.1/lib:$LD_LIBRARY_PATH

(此处说一个比较坑的事)

环境变量配置,虽然运行python、和python脚本都没问题。但是做定时任务crontab 时,由于找不到openssl库,任务跑不起来。害自己排错好久,才找到这个原因。最后重新做了 openssl库文件的软连接。
ln -sf /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
n -sf /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

4.4 测试SSL模块

 该现象说明问题解决了。

五、知识拓展

centos7系统默认安装了python2.X,后续可能又安装了python3.X版本,所以在控制台输入命令进行查看当前机器上安装python情况。因为centos7部分模块依赖于2.X,所以为了不引起某些麻烦,选择不去卸载2.X,直接安装3.X。

# 查看2.x版本情况
python --version 
或
python -V# 查看3.x版本情况
python3 --version
python3 -V 和python

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/693228.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C/C++ BM14 链表的奇偶重排

文章目录 前言题目解决方案一1.1 思路阐述1.2 源码 解决方案二2.1 思路阐述2.2 源码 总结 前言 这道题算是链表思路的一种常规题,看透题目本质做起来还是不难。 题目 描述 给定一个单链表,请设定一个函数,将链表的奇数位节点和偶数位节点分…

c语言实现bellman-ford算法

下面是使用C语言实现Bellman-Ford算法的示例代码。Bellman-Ford算法用于在带权重的图中找到从单个源点到所有其他顶点的最短路径,它也能处理图中包含负权重边的情况。 #include <stdio.h> #include <stdlib.h> #include <limits.h>// 定义边的结构 struct …

OutLook-2010——管理邮箱的工具

OutLook工具可用于管理邮箱、收发邮件等日常工作&#xff0c;在本书的邮局服务章节要使用到。 下载地址&#xff1a;OutLook-2010——管理邮箱的工具.zip

电脑开机蓝屏错误代码c000021a怎么办 电脑蓝屏报错c000021a的解决办法

很多小伙伴在电脑开机的时候出现蓝屏代码c000021a都不知道该怎么去解决&#xff0c;所以今天就给你们带来了c000021a蓝屏解救方法&#xff0c;如果你还没解决的话就快来看看吧。 解决办法&#xff1a; 原因&#xff1a; c000021a蓝屏的原因有很多&#xff0c;主要有以下几种…

四非保研之旅

大家好&#xff0c;我是工藤学编程&#xff0c;虽有万分感概&#xff0c;但是话不多说&#xff0c;先直接进入正题&#xff0c;抒情环节最后再说&#xff0c;哈哈哈 写在开头 我的分享是来给大家涨信心的&#xff0c;网上的大佬们都太强了&#xff0c;大家拿我涨涨信心&#…

【项目实践-03】实验室PC

透传属性 透传属性指组件在使用的时候&#xff0c;作用在组件上的属性&#xff0c;会被向下流动&#xff0c;绑定到组件内的标签中。 可以透传的属性&#xff1a;style&#xff0c;class&#xff0c;id&#xff0c;属性&#xff0c;事件 当一个组件有多个根标签节点时&#xf…

Spring Framework

Spring Framework Spring 是一款开源的轻量级 Java 开发框架&#xff0c;旨在提高开发人员的开发效率以及系统的可维护性。 Spring 框架指的都是 Spring Framework&#xff0c;它是很多模块的集合&#xff0c;如下图所示&#xff1a; 一、Core Container Spring 框架的核心模…

Android的消息机制--Handler

一、四大组件概述 Android的消息机制是由Handler、Message、MessageQueue&#xff0c;Looper四个类支撑&#xff0c;撑起了Android的消息通讯机制&#xff0c;Android是一个消息驱动系统&#xff0c;由这几个类来驱动消息与事件的执行 Handler&#xff1a; 用来发送消息和处…

纯css实现文字左右循环滚动播放效果

思路&#xff1a;由两个span模块组成&#xff0c;第一个为空的span内容&#xff0c;为的是实现第二个span内容缓慢出现的效果。 代码如下&#xff1a; <div class"scrollingStyle"><span class"first-marquee"></span><span class&q…

Samba是什么?有什么作用?工作流程以及如何搭建

前言&#xff1a; 寒假在家学习Linux近一个月了&#xff0c;最近参加了嘉立创组织的泰山派训练营&#xff0c;从中了解到了现在Linux开发中很方便的一些开发方式和工具。例如&#xff1a;使用MobaXterm终端通过SSH登陆ubuntu服务器进行开发&#xff1b;安装一个FileZilla工具通…

定制线缆厂家推荐:赋能科技互联,精工电联的集成线缆定制服务(小批量、多品类产品高效解决方案)

定制线缆 精工电联&#xff1a;赋能科技互联&#xff0c;精工电联的集成线缆定制服务&#xff08;小批量、多品类产品高效解决方案&#xff09; 随着科技的飞速发展&#xff0c;人们对数据传输速度和稳定性的需求日益增强。精工电联作为高科技智能化产品及自动化设备专用连接线…

第二证券:汽车产业链股爆发,中通客车涨停,星源卓镁等大涨

轿车产业链股21日盘中强势拉升&#xff0c;截至发稿&#xff0c;华阳变速涨超29%&#xff0c;星源卓镁涨超15%&#xff0c;德迈仕涨逾10%&#xff0c;中捷精工、中通客车、合力科技、圣龙股份等涨停。 行业方面&#xff0c;中国轿车工业协会近来公布数据显示&#xff0c;1月&a…

【快速搞定Webpack5】介绍及基本使用(一)

webpack 是一个静态资源打包工具。 他会以一个或多个文件作为打包的入口&#xff0c;将我们整个项目所有文件编译组合成一个或多个文件输出出去。 输出的文件就是编译好的文件&#xff0c;就可以在浏览器端运行了。 我们将 webpack 输出的文件叫做 bundle 。 (将浏览器不识别的…

wo-gradient-card是一款采用uniapp实现的透明辉光动画卡片

采用uniapp-vue3实现&#xff0c;透明辉光动画卡片&#xff0c;卡片内容包含标签、标题、副标题、图片 支持H5、微信小程序&#xff08;其他小程序未测试过&#xff0c;可自行尝试&#xff09; 可用于参考学习 可到插件市场下载尝试&#xff1a; https://ext.dcloud.net.cn/plu…

【Swift】NSSearchField用法和示例

1.简介 NSSearchField 是 macOS 中用于搜索的文本输入框控件&#xff0c;通常用于实现搜索功能。用户可以在 NSSearchField 中输入搜索关键字&#xff0c;然后触发搜索操作。NSSearchField 可以显示搜索图标和清除按钮&#xff0c;还可以设置占位符文本等属性。 2.常用方法 …

学习鸿蒙基础(5)

一、honmonyos的page路由界面的路径 新建了一个page,然后删除了。运行模拟器的时候报错了。提示找不到这个界面。原来是在路由界面没有删除这个page。新手刚接触找了半天才找到这个路由。在resources/base/profile/main_pages.json 这个和微信小程序好类似呀。 吐槽&#xf…

(3)(3.5) 遥测无线电区域条例

文章目录 前言 1 支持不同国家/地区 前言 本专题列出了每个国家/地区可用的主要频率&#xff0c;并列出了无线电设备。 &#xff01;Note 合规是你的责任。检查无线电是否符合所在地区/国家的频率、跳频信道和功率级别规定。 &#xff01;Tip 我们很乐意在此表中添加更多…

初探富文本之文档diff算法

初探富文本之文档diff算法 当我们实现在线文档的系统时&#xff0c;通常需要考虑到文档的版本控制与审核能力&#xff0c;并且这是这是整个文档管理流程中的重要环节&#xff0c;那么在这个环节中通常就需要文档的diff能力&#xff0c;这样我们就可以知道文档的变更情况&#…

力扣精选算法100道——提莫攻击(模拟专题)

目录 &#x1f6a9;题目解析 &#x1f6a9;算法原理 &#x1f6a9;实现代码 &#x1f6a9;题目解析 输入&#xff1a;timeSeries [1,4], duration 2 输出&#xff1a;4 解释&#xff1a;提莫攻击对艾希的影响如下&#xff1a; - 第 1 秒&#xff0c;提莫攻击艾希并使其立即…

图片怎么转换格式jpg?轻松转换图片格式

图片怎么转换格式jpg&#xff1f;在数字化时代&#xff0c;图片作为信息传递的重要载体&#xff0c;其格式转换显得尤为重要。JPG作为一种广泛使用的图片格式&#xff0c;具有压缩比高、兼容性好等特点&#xff0c;深受用户喜爱。那么&#xff0c;如何将其他格式的图片轻松转换…