No module named ‘_ssl‘

目录

背景

换了台服务器按照之前centos升级python版本升级python正常编译安装成功,但是当使用时又出现了奇怪的报错,估计是机器太老了

具体报错

这个报错也会导致无法pip安装库

python 复制代码
>>> import ssl
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/PythonDir/lib/ssl.py", line 98, in <module>
    import _ssl             # if we can't import it, let the error propagate
ModuleNotFoundError: No module named '_ssl'

检验

通过命令:openssl version查看centos上openssl版本是1.0,版本过低,导致失败了

升级过程

步骤一:升级ssl。

  1. 分别执行以下命令,下载安装包并编译安装

    bash 复制代码
    wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz
    tar -zxvf openssl-1.1.1d.tar.gz
    cd openssl-1.1.1d
    ./config --prefix=/usr/local/openssl
    make && make install

    说明:./config --prefix=/usr/local/openssl 此命令,可以直接./config ,这样默认安装路径就是/usr/local。建议增加--prefix=/usr/local/openssl ,表示安装路径是在/usr/local/openssl

  2. 修改链接文件

    备份原有链接

    bash 复制代码
    mv /usr/bin/openssl /usr/bin/openssl.bak

    创建软链接

    bash 复制代码
    ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
  3. 添加路径至ld.so.conf

    注意:lib路径最后不带/,否则报错

    bash 复制代码
    echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
  4. 设置生效

    bash 复制代码
    ldconfig -v
  5. 校验版本

    通过openssl version返回如下

    bash 复制代码
    OpenSSL 1.1.1d 10 Sep 2019

步骤二:重新编译安装python

前面跟之前centos升级python版本基本一样

  1. 执行命令清除临时文件:

    bash 复制代码
    make clean
  2. 进行配置:

    bash 复制代码
     ./configure --prefix=/usr/python3  --with-openssl=/usr/local/openssl --with-openssl-rpath=auto

    有2个地方注意:

    • --prefix=/usr/python3 是python安装路径。详细可看centos升级python版本
    • --with-openssl=/usr/local/openssl 是openssl 安装路径。我上面安装时指明了这个路径
  3. 执行命令:

    bash 复制代码
    make

    此时需要注意是否有报错,有报错就是上一步 ./configure配置有问题。

    bash 复制代码
    make install 
  4. 安装后,执行python3 后,通过import ssl没有报错,就证明openssl安装成功了。

相关推荐
BK贝壳6 分钟前
bool-hybrid-array 落盘我只认 .bha:用 Create_BHA / Ask_BHA 做布尔数组序列化
数据结构·python·numpy·1024程序员节
砺星Leetx26 分钟前
工业总线选型与对接实战:PROFINET、EtherCAT、EtherNet/IP、PROFIBUS、Modbus-TCP 与 CC-Link
网络·网络协议·tcp/ip·控制器·国产拧紧系统
2401_8685347832 分钟前
软考网络规划设计师SSL协议知识点详解
服务器·网络
Sakura_j_h_32 分钟前
Python 在定时任务里输出 emoji,UnicodeEncodeError 从哪来
开发语言·字符编码·windows·python·定时任务
Escalating_xu1 小时前
【Linux 网络编程】手写序列化与反序列化:从 x op y 到能校验的文本协议
linux·运维·网络
supabc1232 小时前
欧盟电子发票(XRechnung/Peppol/ZUGFeRD)踩坑记:用 Python 不装 Java 跑官方校验规则
xml·python·开源·电子发票·1024程序员节
ZhengEnCi2 小时前
AI Agent工具调用防护层怎么写-一份能直接跑的Python四层拦截实现
python·llm·agent
ZhengEnCi3 小时前
AI Agent工具误调用怎么解决-从参数校验到高危二次确认的四层工程防线
python·llm·agent
POMAGTOR3 小时前
【磁吸式连接器选型工程解析:结构原理、应用场景与选型可靠性要点】
网络·嵌入式硬件
镜子AI4 小时前
镜子AI工程教程:用Python实现关键词布局检查器与语义改写查重(附完整代码)
人工智能·python·microsoft