• python3解决 ModuleNotFoundError: No module named '_ssl'


    前提是已经安装了openssl

    如果没按装,需要yum安装
    安装依赖:yum install openssl-devel 
    

    问题

    当我在python3虚拟环境中导入ssl模块时报错,报错如下:

    (py3) [root@localhost Python-3.6.3]# python3
    Python 3.6.3 (default, Nov 19 2018, 14:18:18)
    [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import ssl
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/local/python3/lib/python3.6/ssl.py", line 101, in <module>
        import _ssl             # if we can't import it, let the error propagate
    ModuleNotFoundError: No module named '_ssl'
    

    解决办法如下:

    1.首先进入Python-3.6.3目录,就是你解压后安装python3.6的目录文件。
    2. cd 到 Modules 目录里,找到Setup和Setup.dist文件,将下面几行注释去掉。

    • Setup下更改
    • vim Setup (大概在51%的位置)
      img
    • Setup.dist下的更改
    • vim Setup.dist (大概在50%的位置)
      img

    3.编译安装

    cd ..
    ./configure --prefix=/usr/local/python3
    make
    make install
    

    4.删除旧的软连接,创建新的软连接(很重要)

    rm -rf /usr/bin/python3
    ln -s /usr/local/bin/python3.6 /usr/bin/python3
    

    5、删除之前的虚拟环境,重新创建一个新的虚拟环境,导入ssl包就ok了

    # 删除之前建议先将之前的安装的包导出
    # 进入虚拟环境
    source py3/bin/activate
    # 备份文件
    pip freeze > requirements.txt
    # 退出虚拟环境
    deactivate
    # 删除虚拟环境
    rm -rf py3
    # 创建新的虚拟环境
    virtualenv py3 -p /usr/bin/python3
    # 进入到新的虚拟环境中
    source py3/bin/activate
    # 导入ssl包
    (py3) [root@localhost /]# python
    Python 3.6.3 (default, Nov 21 2018, 22:23:54)
    [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import ssl
    >>>
     
    # 恢复之前的python环境
    pip install -r requirements.txt
    

    若用到uwsgi,且需要import ssl,则需要把之前uwsgi卸载,重新编译安装

    pip3 uninstall uwsgi
    sudo pip3 install uwsgi -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
    # 删除原来的软链接,设置新的软链接
    sudo ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
    
  • 相关阅读:
    CEF(Chromium Embedded Framework)使用说明书
    2.CEF常用接口类拦截请求回调函数
    CEF(Chromium Embedded Framework和JavaScript交互相互调用函数和设置数据
    CefV8Value类实现定JavaScript数据类型、数组、对象
    CEF(Chromium Embedded Framework)进程间通讯
    scikit_learn分类器详解
    3.Scikit-Learn实现完整的机器学习项目
    TCP/IP_网络基础知识
    零基础学习python_爬虫(53课)
    安全测试8_Web安全实战3(命令注入)
  • 原文地址:https://www.cnblogs.com/hanfe1/p/13071020.html
Copyright © 2020-2023  润新知