的回答非常有帮助,但它可能存在错误。对于我来说,
compat.base_prefix
使用反斜杠,但它们会与
"/Lib/site-packages/numpy/core"
(正斜杠)连接起来。请注意保留HTML标签。
>>> from PyInstaller import compat
>>> compat.base_prefix
'C:\\Python34'
>>> mkldir = compat.base_prefix + "/Lib/site-packages/numpy/core"
>>> mkldir
'C:\\Python34/Lib/site-packages/numpy/core'
正如你所看到的,它在路径中产生了正斜杠和反斜杠。
以下是我将numpy mkl文件捆绑成一个文件的步骤。请注意,我的特定应用程序使用matplotlib,并且我遇到的问题是每次单击按钮(tkinter)执行绘图时,应用程序会崩溃。
步骤
第一步:使用以下命令构建您的应用程序:
pyinstaller --onefile --windowed yourpythonappnamehere.py
第二步:打开.spec文件并将其添加到其中。显然,首先确保以下文件实际存在。您可能没有Python34,因此只是友好地警告不要盲目复制。
mkl_dlls = [('C:\\Python34\\Lib\\site-packages\\numpy\\core\\mkl_avx.dll', ''),
('C:\\Python34\\Lib\\site-packages\\numpy\\core\\mkl_avx2.dll', ''),
('C:\\Python34\\Lib\\site-packages\\numpy\\core\\mkl_avx512.dll', ''),
('C:\\Python34\\Lib\\site-packages\\numpy\\core\\mkl_core.dll', ''),
('C:\\Python34\\Lib\\site-packages\\numpy\\core\\mkl_def.dll', ''),
('C:\\Python34\\Lib\\site-packages\\numpy\\core\\mkl_intel_thread.dll', ''),
('C:\\Python34\\Lib\\site-packages\\numpy\\core\\mkl_mc.dll', ''),
('C:\\Python34\\Lib\\site-packages\\numpy\\core\\mkl_mc3.dll', ''),
('C:\\Python34\\Lib\\site-packages\\numpy\\core\\mkl_rt.dll', ''),
('C:\\Python34\\Lib\\site-packages\\numpy\\core\\mkl_sequential.dll', ''),
('C:\\Python34\\Lib\\site-packages\\numpy\\core\\mkl_tbb_thread.dll', ''),
('C:\\Python34\\Lib\\site-packages\\numpy\\core\\mkl_vml_avx.dll', ''),
('C:\\Python34\\Lib\\site-packages\\numpy\\core\\mkl_vml_avx2.dll', ''),
('C:\\Python34\\Lib\\site-packages\\numpy\\core\\mkl_vml_avx512.dll', ''),
('C:\\Python34\\Lib\\site-packages\\numpy\\core\\mkl_vml_cmpt.dll', ''),
('C:\\Python34\\Lib\\site-packages\\numpy\\core\\mkl_vml_def.dll', ''),
('C:\\Python34\\Lib\\site-packages\\numpy\\core\\mkl_vml_mc.dll', ''),
('C:\\Python34\\Lib\\site-packages\\numpy\\core\\mkl_vml_mc2.dll', ''),
('C:\\Python34\\Lib\\site-packages\\numpy\\core\\mkl_vml_mc3.dll', ''),
('C:\\Python34\\Lib\\site-packages\\numpy\\core\\libiomp5md.dll', '')]
第三步:在“binaries=None”处更改为“binaries=mkl_dlls”。
a = Analysis(['yourpythonappnamehere.py'],
pathex=['C:\\Users\\...\\Documents\\...'],
binaries=mkl_dlls,
datas=None,
....
第四步:重新运行
第一步。当你构建好应用程序后,进入
dist
文件夹并启动你的应用程序。希望它能为你工作!
更新:如果你遇到
Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll,但你明显可以看到mkl_intel_thread.dll在你的程序目录中,请前往numpy/core并复制所有带有.dll扩展名的文件,然后将它们粘贴到你的程序目录中并重新运行。如果它能工作的话,那就太好了,但你可能需要逐个删除以找出哪些是必需的,哪些是不必要的。