英特尔MKL致命错误:无法加载mkl_intel_thread.dll

时间:2019-08-20 06:35:51

标签: python dll cx-freeze intel-mkl

以前我问过类似的问题:cx_Freeze unable fo find mkl: MKL FATAL ERROR: Cannot load mkl_intel_thread.dll

但是现在我有一个细微的差别。我想仅在cmd.exe终端内运行该程序而无需安装anaconda,但是似乎我做错了或无法执行。

在使用python setup.py bdist_msicx-freeze生成我的应用程序之后,我可以在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,所以可能我错了。)

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:2)

也许缺少MKL所需的另一个DLL,例如libiomp5md.dll,并导致错误。参见Cannot load mkl_intel_thread.dll on python executable,我的回答及其评论。

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

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

编辑:

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

答案 1 :(得分:1)

最近我在python3.7中遇到了同样的错误。我没有选择移动Dll的选项,我只是这样做就解决了这个问题。

conda install cython

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

答案 2 :(得分:1)

根据 https://stackoverflow.com/a/56186333/977566,我将 c:\windows\system32\libiomp5md.dll 重命名为 .bak 并为我修复了它。

答案 3 :(得分:0)

<块引用>

设置 CONDA_DLL_SEARCH_MODIFICATION_ENABLE=1;

会解决你所有的问题