繁体   English   中英

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

[英]Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll

以前我问过一个类似的问题: cx_Freeze 无法找到 mkl: MKL FATAL ERROR: Cannot load mkl_intel_thread.dll

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

使用cx-freeze使用python setup.py bdist_msi生成我的应用程序后,我可以在 anaconda 环境中安装并运行它,但如果我只是打开一个cmd.exe终端并运行它,IDA54.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 )丢失并导致错误。 请参阅无法在 python 可执行文件上加载 mkl_intel_thread.dll ,我在那里的回答及其评论。

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

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

编辑:

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

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

conda install cython

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

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

设置 CONDA_DLL_SEARCH_MODIFICATION_ENABLE=1;

会解决你所有的问题

For this, it is enough to get the full version of visual c++ program and delete anaconda and folders related to anaconda such as .anaconda or .conda or .matplotlib or AppData/anaconda and... and then install it again
当然,不要忘记所有的英特尔服务都必须处于活动状态
https://docs.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM