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" 文件
祝好~
(☞゚ヮ゚)☞ ☜(゚ヮ゚☜))