如何在 conda 环境中安装库时修复未找到入口点

Posted

技术标签:

【中文标题】如何在 conda 环境中安装库时修复未找到入口点【英文标题】:How to Fix Entry Point Not Found while installing libraries in conda environment 【发布时间】:2019-12-06 19:17:24 【问题描述】:

我正在通过在其中创建多个环境来开发 Anaconda。我已经创建了一个环境camelot,现在我想在这个环境中安装不同的库。所以例如在这个环境中安装pandas, 我在写:

conda install pandas 

conda install -c conda-forge camelot-py

然后它给了我这个错误:

python.exe-Entry Point Not Found
   The procedure entry point OPENSSL_sk_new_reserve could not be 
   located in the dynamic link library.
   C:\Users\abc\Anaconda3\Library\bin\libssl11_-x64.dll

一开始我以为可能是环境变量的问题,于是我给Python设置了一个环境变量,但是这并没有解决问题。

【问题讨论】:

以下为我解决了这个问题github.com/conda/conda/issues/9003#issuecomment-539348297 @UsmanGhaniMughal 您收到了许多工作建议。请考虑将其中一个标记为已接受的答案。 【参考方案1】:

我遇到了完全相同的问题,而且它也是今天才开始的。有点毁了我整个工作日,tbh...

我不小心在我的基础环境中做了一个conda install ...,它更新了 conda 和一些其他模块。 (在我的情况下,Conda 从 4.5.12 升级到了 4.7.10。)无论如何,在我回滚之后,一切又按预期工作了。

如果这是导致您的问题的原因,这里有一个修复方法。

    conda list --revisions

    conda install --revision 1(在我的例子中,“rev 1”是我最近的稳定基础环境。)

(更多详情:https://sriramjaju.github.io/2018-05-30-2-minute-recipe-how-to-rollback-your-conda-environment/)

现在我担心我无意中以与最新版本的 conda 不兼容的方式配置了一些东西。

编辑:如果您除了在 conda 环境中玩耍以测试驱动模块之外,请不要遵循最后一个建议。见this 和this。

最后,如果您确实需要安装模块并尽快完成一些工作,pip install [module name] 在我考虑进行还原之前仍然为我工作。

【讨论】:

是的!对我来说同样的事情我只是在我的基础环境中更新 conda,是的 pip 工作正常,但无法使用 conda 安装任何东西。骆驼包你知道怎么用吗? 对不起,我对骆驼没有任何经验。不过,您是否能够恢复到较早的版本并让 conda 再次工作? 我已经完全卸载 anaconda 然后重新安装它现在它正在工作我不知道如何但它正在工作我认为这是因为我之前在我的基础环境中进行了 conda 更新 我很高兴听到这个消息!祝骆驼好运。 :) 您的建议不适合使用 conda 环境的人。 OP 的问题是关于解决 conda 环境中的问题。在 conda 环境中使用 pip 可能会破坏 conda 环境,因为 pip 不会对 conda 环境进行环境一致性检查。它将包放入 conda 随后不知道的环境中。有关更多信息,请参阅 conda 手册页:docs.conda.io/projects/conda/en/latest/user-guide/tasks/…【参考方案2】:

正如here 中建议的那样,我可以通过将Anaconda/DLLS 中的libssl-1_1-x64 dlls 复制到Anaconda/Library/bin 来解决这个问题(可能会替换它)

【讨论】:

不建议只复制 DLL。见我的answer below【参考方案3】:

我在更新 Anaconda 导航器时遇到了同样的问题,并通过将 Anaconda3/Library/bin 中的文件 libssl-1_1-x64.dll 替换为一个来自 Anaconda3/DLLs

【讨论】:

谢谢,这解决了我的问题。 这解决了问题,但它破坏了我的 openssl。正如@titusjan 所建议的,我必须使用conda clear --allconda install openssl --force-reinstall 来解决这个问题。 不是conda clean --all?【参考方案4】:

对于那些仍然对libssl11_-x64.dll 或其他.dll 文件有类似问题的人:

如果可以,请改用pip install


我今天在尝试使用 plotly 安装时遇到了与 libcrypto-1_1-x64.dll 相同的问题

conda install -c plotly plotly

这会提示 anaconda 降级,进而引发错误:

OPENSSL_sk_new_reserve [...] libcrypto-1_1-x64.dll

相反,使用例如

pip install plotly==4.1.0

像魅力一样工作!

【讨论】:

您的回答是题外话,对使用 conda 环境的人来说是一个不好的建议。 OP 的问题是关于解决 conda 环境中的问题。在 conda 环境中使用 pip 可能会破坏 conda 环境,因为 pip 不会对 conda 环境进行环境一致性检查。它将包放入 conda 随后不知道的环境中。有关更多信息,请参阅 conda 手册docs.conda.io/projects/conda/en/latest/user-guide/tasks/… @RichLysakowskiPhD 感谢您的反馈!如果你有一个更好的解决方案,请提供一个更好的解决方案。如果您觉得如此倾向,请随时将我的答案标记为Not an answerIn need of moderator intervention。后一种情况,别忘了留下具体详细的说明。【参考方案5】:

正如 Anaconda 维护者 here 所提到的...

这样移动 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.0openssl 软件包,则会有两个 libssl-1_1-x64.dll 文件,并且您的 Anaconda 发行版将被破坏。 (您可以使用conda list 命令轻松验证这一点。)

因此,我认为修复它的最佳方法是:

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

    复制DLLs\libssl-1_1-x64.dllLibrary\bin\libssl-1_1-x64.dll

    将 Python 更新到 3.7.1 或更高版本,例如使用 conda update python。这将删除 DLLs\libssl-1_1-x64.dll 文件。

    删除当前的Library\bin\libssl-1_1-x64.dll文件。

    Library\bin\libssl-1_1-x64.dll.org 重命名回 Library\bin\libssl-1_1-x64.dll。这是必要的,否则我会在下一步中遇到 HTTP 错误。

    使用conda install openssl --force-reinstall 重新安装 OpenSSL 以确保它再次处于最新状态。

【讨论】:

【参考方案6】:

我的问题是一样的。我刚刚卸载了anaconda,然后重新安装。问题就解决了。

【讨论】:

【参考方案7】:

我在更新 spyder 和 conda 包时收到了同样的以下错误。

python.exe-Entry Point Not Found
   The procedure entry point OPENSSL_sk_new_reserve could not be 
   located in the dynamic link library.
   C:\Users\abc\Anaconda3\Library\bin\libssl11_-x64.dll

解决方案:

我确实将 libssl-1_1-x64 dllsAnaconda/DLLs 替换为 Anaconda/Library/bins 建议 here。 在打开 Anaconda Navigator 桌面应用程序之前,我使用 conda update conda 在 Anaconda Prompt 中更新了 conda。 conda 已成功更新。 然后我使用conda update spyder 命令更新了spyder 蟒蛇提示。 spyder 更新并成功运行。

【讨论】:

这似乎解决了我长期困扰的问题。由于 dll 错误,我已经几个月无法使用 conda install 了。我只是在按照@Pathik's answer here 中的建议进行了尝试,并且成功了!这对我很有帮助,谢谢!

以上是关于如何在 conda 环境中安装库时修复未找到入口点的主要内容,如果未能解决你的问题,请参考以下文章

C++ Builder 2009 - IndySystem120.bpl - 未找到入口点

在 Visual Studio 2019 C++ 中安装库

如何在 conda 环境中安装 libsvm,以便可以在 anaconda 中导入 svm?

ctags:加载共享库时出错:libgpm.so.1:无法打开共享对象文件:没有这样的文件或目录

查看python中安装库的文件位置的方法

Conda 环境未显示在 Jupyter Notebook 中