記錄一些瑣碎的結果
前提:
環境&依賴: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" 文件
祝好~