Python 杂记(3) import _ssl | ImportError: DLL load failed: 找不到指定的模块

2021/8/27 9:35:56

本文主要是介绍Python 杂记(3) import _ssl | ImportError: DLL load failed: 找不到指定的模块,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

记录一些琐碎的结果


前提:
环境&依赖:anaconda、vscode、win10      (版本就不介绍了,目前调试没发现问题指向版本)

问题描述:
执行github上某个项目时发现报错如下:
"""
    Traceback (most recent call last):
      File "c:/vscode_pj/test_py3/test_ssl.py", line 1, in <module>
        import ssl
      File "C:\Users\admin\AppData\Local\conda\conda\envs\pytest37\lib\ssl.py", line 98, in <module>
        import _ssl             # if we can't import it, let the error propagate
    ImportError: DLL load failed: 找不到指定的模块。
"""

环境刚好是新搭的,果断推掉重建一个新env,并执行测试脚本(排除其他依赖包的影响)
test_ssl.py
"""
    import traceback
    try:
        import ssl
        print('import ssl')
        #import _ssl
    except Exception as e:
        traceback.print_exc()
    print('end')
"""
结果报错还是  "...ImportError: DLL load failed: 找不到指定..." balabala

解决方案:
方案1:
anaconda 环境变量未配置全, 不全环境变量
 (具体内容视个人情况调整  高级系统设置->环境变量->系统变量->Path)
    a.
        补充
        C:\ProgramData\Anaconda3\Library\bin
    b.
        C:\ProgramData\Anaconda3
        C:\ProgramData\Anaconda3\Scripts
        C:\ProgramData\Anaconda3\Library\bin

方案2:
 将 anaconda 卸载,重新安装;并在安装对话窗勾选 "添加环境变量",它会给系统环境变量添加如下内容
    c.
        D:\ProgramData\Anaconda3
        D:\ProgramData\Anaconda3\Library\mingw-w64\bin
        D:\ProgramData\Anaconda3\Library\usr\bin
        D:\ProgramData\Anaconda3\Library\bin
        D:\ProgramData\Anaconda3\Scripts

(搜索过程中还发现其他答案,基本是没解决问题或跑题的;就不贴这了以免误导,文尾补充)

问题还没完,我的环境不止这一个
<cmd.exe>
C:\User\**>conda info -e
# conda environments:
#
base              * D:\ProgramData\Anacoda3
py37env             D:\ProgramData\Anacoda3\envs\py37env
...

经过方案2的操作,在vscode已经能正常执行代码,但是切换 conda.env 时,问题还是复现了.
在 'settings.json > {} code-runner.executorMap' 来回切换 conda.env, 发现只有 base.env 是好的
于是我在系统环境变量加上了其中一个虚拟环境的路径配置
    D:\ProgramData\Anaconda3\envs\py37env\Library\bin
    D:\ProgramData\Anaconda3\envs\py37env\Scripts

有解决一个,但是这个方案太low了;如果有其他更好的解决方案,希望网友告知一下,感激!


最后,网上还有几类关键字相同的问题,简单列一下
1.linux python 安装以后发现 "import ssl" 失败的(未验证)
    此类问题如果不想调整Python版本,解决方案都是重编译(重编译前确保openssl以及openssl-devel文件存在);
    另外用Windows系统的同学,不要直接试,你会发现你没有make指令
    win配置make指令又是一堆问题,跑偏了浪费时间

2.pip install 报 SSLError(已验证)
    修改 "C:\Users\***\.condarc" 文件
    
    channels:
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
    show_channel_urls: true
    ssl_verify: false

3.anaconda ssl 报错环境变量方案无效(未验证)
    替换 "C:\Users\***\AppData\Local\conda\conda\envs\pytest37\DLLs\_ssl.pyd" 文件

祝好~

这篇关于Python 杂记(3) import _ssl | ImportError: DLL load failed: 找不到指定的模块的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程