Anaconda"無法定位程序輸入點 OPENSSL_sk_new_reserve 於動態鏈接庫Anaconda3\Library\bin\libssl-1_1-x64.dll上"的解決辦法


Anaconda"無法定位程序輸入點 OPENSSL_sk_new_reserve 於動態鏈接庫Anaconda3\Library\bin\libssl-1_1-x64.dll上"的解決辦法

參閱:https://stackoverflow.com/a/59884311/625350

問題描述

在anaconda上來來回回裝了好些個包之后、不同環境下裝了不同python版本后報錯,自此無法conda install,十分麻煩,參閱了CSDN上各種解決方法,主要是將DLLs里的libssl-1_1-x64.dll文件復制粘貼到bin里,完全治標不治本,要不就是打不開anaconda,要不就是還不能install,歲將問題翻成英文,去StackOverflow上尋找答案。

解決方法

次解決方法為StackOverflow上titusjan用戶提出,我個人試驗后可行,將谷歌翻譯后版本給出:

正如Anaconda維護人員在這里(https://github.com/conda/conda/issues/9003#issuecomment-553529174)提到的...

那樣移動libssl dll實在不可取。那些DLL是重復的,因為您的程序包中有些混亂。DLLs文件夾中不應有任何openssl DLL。它們應該在Library / bin中

通過查看conda-meta目錄中的JSON文件,我發現DLLs\libssl-1_1-x64.dll該python 3.7.0軟件包Library\bin\libssl-1_1-x64.dll已安裝且已由openssl軟件包安裝。經過進一步調查,我發現了Python 3.7.0並沒有安裝OpenSSL的作為一個單獨的包,但是Python 3.7.1(或更高版本)呢。

通常,升級Python會按預期進行,但是如果您最終以某種方式同時將它們python 3.7.0和openssl軟件包同時安裝,將會有兩個libssl-1_1-x64.dll文件,並且您的Anaconda發行版將被破壞。(您可以使用conda list命令輕松地對此進行驗證。)

我認為解決此問題的最佳方法是:

  1. 重命名Library\bin\libssl-1_1-x64.dll為Library\bin\libssl-1_1-x64.dll.org(您稍后將需要它。)

  2. 復制DLLs\libssl-1_1-x64.dll到Library\bin\libssl-1_1-x64.dll

  3. 使用conda update python將Python版本更新。這將刪除DLLs\libssl-1_1-x64.dll文件。

  4. 重命名Library\bin\libssl-1_1-x64.dll.org為Library\bin\libssl-1_1-x64.dll。這是必要的,因為否則下一步將出現HTTP錯誤。

  5. 使用conda install openssl --force-reinstall重新安裝OpenSSL以確保它是最新的。

總結

事實上,DLL文件夾里的libssl-1_1-x64.dll文件完全是不應該存在的,根據官方說法將anaconda添加到system path也是不好的,所以實在不行不如重裝。(anaconda真的麻煩)


免責聲明!

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



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