问题:INTEL MKL ERROR: 找不到指定的模块。 mkl_intel_thread.dll.
Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll.
描述:
最近学习用pyqt5做UI,完成后用pyinstaller打包exe执行文件。
第一次简单写了一个界面,直接 pyinstaller -Fw test.py打包成功。
第二次写了个复杂点的UI,用到的库有:
进行打包时遇到各种module缺失,文件找不到的错误,一一安装了缺失的module,将文件加入路径,解决了之后,打包过程中没有再出现错误,但是有warning:
直接运行打包好的exe,没有反应,再次用pyinstaller -F test.py打包后,运行exe,命令窗口出现:
INTEL MKL ERROR: 找不到指定的模块。 mkl_intel_thread.dll.
Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll.
上网搜了好多方法,试了加入环境变量、加入python.exe路径,加入打包路径等没有效果,依然报同一个错后,决定换虚拟环境打包试试。
解决:
我是用的pycharm建立虚拟环境运行的程序,在网上查到一些在某个文件夹下新建虚拟环境打包时,觉得没有必要,我用到的module在venv中都有,就尝试在pycharm工程下的venv下打包:
1.首先进入venv-Scripts:
2.安装pyinstaller:pip install pyinstaller
3.激活虚拟环境:
在上述命令框中输入activate,得到:
4.将要打包的py文件放入该路径(我的是一个py文件)
5.打包:pyinstaller -F test_1.py
先用-F命令,有错误方便查看,第一次打包后有一个警告,说我没有win32com模块,但是UI可以正常显示出来,为了稍微完美些,就在路径下安装了wim:pip install wim,再次打包后就无警告无错误:
UI也可以正常显示:(只能截这么多了,哈)
6.除了成功打包外,还有一个好处是,原来打包后要105M多的文件,现在打包后只有62M多,体积小了不少:
2021年2月,遇到了同样的错误,打包过程中没有出错,就是运行打包好的exe文件时候出现这个错误:
INTEL MKL ERROR: 找不到指定的模块。 mkl_intel_thread.dll.
Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll.
用了之前的方法,甚至各种环境都设置成一样的,但是仍然打包失败。只好再次在网络上搜索广大网友的解决方法。
倒是有很多人遇到这个问题了,但解决方法五花八门,一一试过后还是同样的问题。
只好一个一个检查自己的环境,一一试错排除后,最后还是将问题锁定在了numpy上面:
将numpy1.18.5+mkl换成了numpy1.20.0(卸载原来的,然后用pip直接联网安装),然后再次打包,打包成功,没有报错。说明问题在于:
1) numpy版本低;2)numpy加不加mkl;
首先从外网下载了numpy1.19.5+mkl,安装尝试,打包失败,出现同样的错误,然后卸载numpy1.19.5+mkl,安装numpy1.20.0(用pip自动联网安装),然后打包成功了。为了避免版本的影响,重新安装了numpy1.19.0(因为没有1.19.5的),不加mkl,最后来验证是否是版本影响。经实验,打包成功,找到失误原因是numpy+mkl,需要用不加mkl的numpy。
忘记了之前解决时候有没有换numpy,解决好估计是误打误撞了(毕竟这次用同样的方法就不行了),这次经过两次两个不同环境重复试验,应该比较正确了。看下次再遇到同样情况的话管不管用了,或者说一直这样配置环境而从不发生同样错误也可以说明比较管用。