一、报错信息
INTEL MKL ERROR: 找不到指定的模块。mkl_intel_thread.dll.
Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll.
二、问题原因
win10系统+python3.7:准备写一段python代码,为了不想这段代码明文展示,想将其编译成二进制可接受传参形式运行,代码示例如下:
if __name__ == '__main__':
import sys
print(sys.argv)
para1 = sys.argv[1]
para2 = sys.argv[2]
para3 = sys.argv[3]
para4 = sys.argv[4]
para5 = sys.argv[5]
para6 = sys.argv[6]
print(para1)
print(para2)
print(para3)
print(para4)
print(para5)
print(para6)
而从百度上找了很多编译的方法,发现cx_freeze模块使用起来最方便,支持的系统和版本也较多,可直接运行命令cxfreeze xxx.py即可,会在当前目录下生成dist目录,进入该目录会发现有一个xxx.exe文件,cmd切换到该目录下,执行该文件,并同时传入所需参数即可运行。
三、运行时报错
INTEL MKL ERROR: 找不到指定的模块。mkl_intel_thread.dll.
Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll.
四、解决办法
4.1 方法尝试
从网上找了很多方法,均不奏效,后来发现是numpy版本不对,numpy版本不支持mkl_intel,本人尝试使用conda update numpy,执行改命令后会进行一系列依赖包的升级(视网速快慢),一段时间后,升级完成。
4.2 结果
cmd切换到python脚本所在目录,执行cxfreeze xxx.py,等待一段时间,编译结束
再切换到dist目录下,运行xxx.exe,发现不再报错。再传入指定参数,即可实现python脚本二进制编码。