当前位置: 首页 > news >正文

No module named ‘_ssl‘

目录

    • 背景
    • 具体报错
    • 检验
    • 升级过程
      • 步骤一:升级ssl。
      • 步骤二:重新编译安装python

背景

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

具体报错

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

>>> 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查看centosopenssl版本是1.0,版本过低,导致失败了

升级过程

步骤一:升级ssl。

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

    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. 修改链接文件

    备份原有链接

    mv /usr/bin/openssl /usr/bin/openssl.bak
    

    创建软链接

    ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
    
  3. 添加路径至ld.so.conf

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

    echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
    
  4. 设置生效

    ldconfig -v
    
  5. 校验版本
    通过openssl version返回如下

    OpenSSL 1.1.1d 10 Sep 2019
    

步骤二:重新编译安装python

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

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

    make clean
    
  2. 进行配置:

     ./configure --prefix=/usr/python3  --with-openssl=/usr/local/openssl --with-openssl-rpath=auto
    

    有2个地方注意:

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

    make
    

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

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

http://www.lryc.cn/news/451716.html

相关文章:

  • Linux —— Socket编程(三)
  • 5G N2 N3 N6 NB口
  • 【数据结构】堆(Heap)详解
  • 《Linux从小白到高手》理论篇(四):Linux用户和组相关的命令
  • OpenGL ES 之EGL(6)
  • kotlin 委托
  • Stream流的中间方法
  • 【车载开发系列】ParaSoft单元测试环境配置(四)
  • IDEA 设置自动定位文件
  • Nature Machine Intelligence 基于强化学习的扑翼无人机机翼应变飞行控制
  • [Web安全 网络安全]-XXE 外部实体注入攻击XML
  • 8--苍穹外卖-SpringBoot项目中套餐管理 详解(二)
  • 测试面试题:pytest断言时,数据是符点类型,如何断言?
  • Python与MongoDB交互
  • 安卓AI虚拟女友项目开发的Android开发环境搭建
  • 基于SpringBoot+Vue+MySQL的智能垃圾分类系统
  • 你的个人文件管理助手:AI驱动的本地文件整理工具
  • 【PyTorch】环境配置
  • 枫叶MTS格式转换器- 强大、操作简单的MTS、M2TS视频转换工具供大家学习研究参考
  • Vscode把全部‘def‘都收起来的快捷键
  • Web和UE5像素流送、通信教程
  • 【YOLO目标检测电梯间电动车与人数据集】共4321张、已标注txt格式、有训练好的yolov5的模型
  • 【网络安全】公钥基础设施
  • 云原生(四十一)| 阿里云ECS服务器介绍
  • 计算机网络:计算机网络体系结构 —— OSI 模型 与 TCP/IP 模型
  • 【openwrt-21.02】T750 openwrt switch划分VLAN之后网口插拔状态异常问题分析及解决方案
  • C++随心记
  • 【微服务即时通讯系统】——brpc远程过程调用、百度开源的RPC框架、brpc的介绍、brpc的安装、brpc使用和功能测试
  • 鸿蒙开发(NEXT/API 12)【状态查询与订阅】手机侧应用开发
  • vite中sass警告JS API过期