以前我问过一个类似的问题:thread.dll
但现在我有了微妙的不同。我想在没有安装anaconda的情况下运行这个程序,就在一个cmd.exe
终端中,但是看起来我做错了什么或者它是不可能的。
在使用python setup.py bdist_msi
使用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.
但是,当运行时
where mkl_intel_thread.dll
找到了dll,所以我认为这意味着它已经在系统中注册了(我更习惯使用Linux,所以我可能错了)。
我怎样才能解决这个问题?
发布于 2019-08-20 07:25:01
可能MKL所需的另一个DLL (例如libiomp5md.dll
)丢失并导致错误。见thread.dll on python executable,我的答案和评论。
如果这仍然不能解决您的问题,请尝试手动将其他DLL从anaconda环境的库路径复制到应用程序安装目录及其lib
子目录中。一旦发现缺少了哪个依赖项,就可以使用cx_Freeze的cx_Freeze选项在设置中自动执行这一步骤(如您所知)。
另一个可能的问题是,您的系统上安装了一个不兼容的MKL版本,而冻结的应用程序发现了错误的版本,但这是不太可能的,除非您在64位系统上安装了32位Python,或者已经在另一个系统上安装了应用程序。
编辑:
也可能只是冻结的应用程序没有找到mkl_intel_thread.dll
,尽管where
找到了它。where
查看由PATH
环境变量提供的系统搜索路径,而Python则查看sys.path
给出的模块搜索路径(通常不包括PATH
的内容),请参见Where is Python's sys.path initialized from?,但是在Where is Python's sys.path initialized from?上有一种注册DLL的回退机制(我不知道它是如何工作的)。无论如何,一旦打算在另一个系统上安装和运行应用程序,就不应该依赖此回退,因为必要的DLL可能不在那里安装。因此,安装目录中应该始终包含必要的依赖项。
发布于 2020-08-24 11:03:05
最近,我在python3.7中也遇到了同样的错误。我没有选择移动Dll,我只是做了解决问题。
conda install cython
在cython安装之后,所有dll都在适当的位置。
发布于 2021-06-20 03:41:02
根据https://stackoverflow.com/a/56186333/977566,我将c:\windows\system32\libiomp5md.dll重命名为.bak,并为我修复了它。
https://stackoverflow.com/questions/57567892
复制相似问题