j4n7 's Antwort war sehr hilfreich, aber es kann oder darf nicht fehlerhaft sein. compat.base_prefix
verwendet Backslashes (zumindest für mich), aber sie verketten sich dann mit "/Lib/site-packages/numpy/core"
(Schrägstriche).
>>> 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'
Wie Sie sehen können, erzeugt es sowohl Vorwärts- als auch Rückwärtsstriche in einem Pfad.
Hier sind meine Schritte, die mir erlaubt, die numpy MKL-Dateien in Onefile zu bündeln. Beachten Sie, dass meine spezielle Anwendung matplotlib verwendet und das Problem, das ich hatte, war jedes Mal, wenn ich auf eine Schaltfläche (tkinter) klickte, um die Handlung auszuführen, stürzte die App ab.
Schritte
Erste: einen Build Ihrer Anwendung unter Verwendung der:
pyinstaller --onefile --windowed yourpythonappnamehere.py
Zweite: Öffnen Sie die .spec
Datei und fügen diese zu. Stellen Sie sicher, dass die folgenden Dateien tatsächlich zuerst existieren. Sie können nicht Python34
so nur eine freundliche Warnung, nicht blind zu kopieren.
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', '')]
Dritte: wo es heißt binaries=None
, Änderung binaries=mkl_dlls
.
a = Analysis(['yourpythonappnamehere.py'],
pathex=['C:\\Users\\...\\Documents\\...'],
binaries=mkl_dlls,
datas=None,
....
Vierte: Re-run den ersten Schritt. Wenn deine App erstellt wurde, gehe in den Ordner dist
und starte deine App. Ich hoffe es funktioniert für dich!
UPDATE: Wenn Sie Intel MKL FATAL ERROR erhalten: Kann nicht mkl_intel_thread.dll laden aber Sie können das mkl_intel_thread.dll ist in Ihrem Programmverzeichnis klar sehen, gehen Sie zu numpy/Kern und buchstäblich kopieren Sie alle Dateien mit .dll-Erweiterungen, die Sie nicht haben, und fügen Sie sie in das Programmverzeichnis ein und führen Sie sie erneut aus. Wenn es funktioniert, großartig, aber Sie möchten vielleicht eins nach dem anderen löschen, um herauszufinden, welche Sie brauchen und welche nicht.
Danke. Dein Fix hat mein Problem gelöst. Aber jetzt merkte ich, dass wenn meine App Anruf Funktion in Bezug auf pyqtgraph es mit dem gleichen Fehler abstürzt: Intel MKL FATAL FEHLER: Kann nicht laden mkl_intel_thread.dll –
Ist dies eine andere App? es stürzt mit dem gleichen Fehler ab? – LeonidR
Nein, die gleiche App enthält auch pyqtgraph. Wenn ich jetzt die exe ausführe, die von pyinstaller generiert wurde, läuft es gut, bis eine Funktion, die pyqtgraph verwendet, aufgerufen wird, nachdem sie mit dem Intel MKL FATAL ERROR abstürzt. Vor der Behebung des Problems tritt der Absturz auf. Erlier –