Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll

Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll

之前我问过类似的问题:

但现在我有一个微妙的区别。我想 运行 程序而不安装 anaconda,只是在 cmd.exe 终端内,但似乎我做错了什么或者这是不可能的。

在使用 cx-freeze 使用 python setup.py bdist_msi 生成我的应用程序后,我可以在 anaconda 环境中安装然后 运行 它,但是如果我只是打开一个 cmd.exe终端和运行它,我得到

INTEL MKL ERROR: The specified module could not be found. mkl_intel_thread.dll.
Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll.

然而,当运行宁

where  mkl_intel_thread.dll

找到了dll,所以我认为这意味着它在系统中注册了(我更习惯使用Linux,所以可能是我错了)。

我该如何解决这个问题?

可能缺少 MKL 所需的另一个 DLL,例如 libiomp5md.dll,从而导致错误。请参阅 ,我在那里的回答及其评论。

如果仍然不能解决您的问题,请尝试从anaconda环境的库路径中手动复制其他DLL到应用程序安装目录及其lib子目录中。一旦找到缺少的依赖项,就可以使用 cx_Freeze 的 include_files 选项在设置中自动执行此步骤(如您所知)。

另一个可能的问题是您的系统上安装了不兼容的 MKL 版本,并且冻结的应用程序找到了这个错误的版本,但这不太可能,除非您在 Python 上安装了 32 位 Python 64 位系统或已在其他系统上安装应用程序。

编辑:

也可能只是冻结的应用程序没有找到 mkl_intel_thread.dll 尽管 where 找到了它。 wherePATH环境变量给出的系统搜索路径中查找,而Python在sys.path给出的模块搜索路径中查找,通常不包括内容PATH,请参阅 Where is Python's sys.path initialized from? 但是在 Windows 上有一个已注册 DLL 的回退机制(我不知道它是如何工作的)。无论如何,一旦打算在另一个系统上安装和 运行 应用程序,就不应依赖此回退,因为那里可能没有安装必要的 DLL。因此,必要的依赖项应始终包含在安装目录中。

最近我在 python3.7 遇到了同样的错误。我没有移动 Dll 的选项,我通过这样做解决了问题。

conda install cython

安装 cython 后,所有的 dll 都在正确的位置。

set CONDA_DLL_SEARCH_MODIFICATION_ENABLE=1;

会解决你所有的问题

根据 我将 c:\windows\system32\libiomp5md.dll 重命名为 .bak 并为我修复了它。