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

ElB*_*ulP 6 python dll intel-mkl cx-freeze

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

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

python setup.py bdist_msi使用 using生成我的应用程序后cx-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.
Run Code Online (Sandbox Code Playgroud)

但是,运行时

where  mkl_intel_thread.dll
Run Code Online (Sandbox Code Playgroud)

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

我怎么能解决这个问题?

jpe*_*peg 7

也许 MKL 所需的另一个 DLL(例如)libiomp5md.dll丢失并导致错误。请参阅Cannot load mkl_intel_thread.dll on pythonexecutable,我的回答及其评论。

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

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

编辑:

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