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" 文件

祝好~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM