滴滴答答滴滴答 2024-04-18 15:38 采纳率: 50%
浏览 91
已结题

在linux服务器运行python脚本异常ModuleNotFoundError: No module named '_ssl'

在服务器上运行python脚本连接服务器的redis,弹出异常ModuleNotFoundError: No module named '_ssl'
其他的脚本都能正常运行,将连接redis的操作删除后,脚本也能正常跑通。
服务器上的python版本是3.11 openssl也已经安装了,版本为3.0.7

img

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-18 15:38
    关注

    引自免费微信小程序:皆我百晓生

    看起来你在Python环境中遇到了一个ModuleNotFoundError: No module named '_ssl'的问题。这通常意味着你的Python环境缺少SSL模块,或者是Python的SSL库没有正确地链接到C语言实现的部分(即 _ssl 模块)。由于你的系统已经安装了OpenSSL,并且Python版本是3.11,理论上应该包含SSL支持。但这里有几个步骤可以帮助你排查并解决这个问题:

    1. 检查环境变量: 确保你的Python环境正确加载了OpenSSL的库路径。可以尝试运行下面的命令来查看当前的环境变量设置:
    echo $LD_LIBRARY_PATH
    

    如果你看到OpenSSL的路径不在输出中,你需要更新LD_LIBRARY_PATH,使其包含OpenSSL的lib目录。例如,如果你的OpenSSL位于 /usr/local/openssl/lib,则可以添加这个路径到环境变量中:

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/openssl/lib
    source ~/.bashrc  # 使更改生效
    
    1. 重新编译Python: 尽管你已经在系统层面安装了OpenSSL,Python可能是在不依赖系统库的情况下构建的。你可以考虑重新编译Python,确保它能正确找到OpenSSL。首先卸载现有的Python 3.11(如果有其他版本,保留它们),然后从源码重新安装Python 3.11,确保指定正确的OpenSSL路径。以下是大致步骤:
    # 卸载现有Python 3.11
    sudo yum remove python3.11*
    
    # 下载Python 3.11源码
    wget https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tgz
    
    # 解压并进入目录
    tar -zxvf Python-3.11.0.tgz
    cd Python-3.11.0
    
    # 配置时指定OpenSSL路径
    ./configure --with-openssl=/usr/local/openssl
    
    # 编译并安装
    make -j$(nproc)
    sudo make altinstall
    
    1. 验证SSL模块: 安装完新的Python后,创建一个新的简单脚本来测试SSL模块是否可用:
    # test_ssl.py
    import ssl
    
    print(ssl.OPENSSL_VERSION)
    

    运行此脚本:

    python3.11 test_ssl.py
    

    如果输出显示了OpenSSL的版本信息,那么问题可能已经解决了。

    1. 修复虚拟环境: 如果问题仍然存在,可能是虚拟环境的问题。尝试更新虚拟环境中的包,或者重新创建一个虚拟环境并安装所有必要的依赖项:
    # 在你的项目目录中执行以下操作
    rm -rf myenv
    python3.11 -m venv myenv
    source myenv/bin/activate
    pip install redis
    

    现在再次运行你的脚本,看是否还会有同样的错误。

    如果以上步骤都无法解决问题,可能需要更深入地检查Python的构建配置和链接过程。在这种情况下,你可能需要寻求更专业的开发人员的帮助,因为这可能涉及到更复杂的系统级调试。

    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月14日
  • 专家已采纳回答 5月6日
  • 创建了问题 4月18日

悬赏问题

  • ¥15 依据报错在原代吗格式的基础上解决问题
  • ¥15 在虚拟机中安装flash code
  • ¥15 单片机stm32f10x编写光敏电阻调节3.3伏大功率灯亮度(光强越大灯越暗,白天正常光强灯不亮,使用ADC,PWM等模块)望各位找一下错误或者提供一个可实现功能的代码
  • ¥20 verilog状态机方法流水灯
  • ¥15 pandas代码实现不了意图
  • ¥15 GD32H7 从存储器到外设SPI传输数据无法重复启用DMA
  • ¥25 LT码在高斯信道下的误码率仿真
  • ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
  • ¥15 yolov5目标检测并显示目标出现的时间或视频帧
  • ¥15 电视版的优酷可以设置电影连续播放吗?