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,所以可能是我错了)。
我怎么能解决这个问题?
也许 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。因此,必要的依赖项应始终包含在安装目录中。
| 归档时间: |
|
| 查看次数: |
11234 次 |
| 最近记录: |