Pyinstaller numpy "Intel MKL FATAL ERROR: kann Nicht geladen werden mkl_intel_thread.dll"
Ich bin neu mit python apps. Ich versuchte, meine python-GUI-app mit pyinstaller.
Meine app hängt von den folgenden Paketen: PyQt4, numpy, pyqtgraph, h5py.
Ich arbeite mit WinPython-32bit-3.4.4.1.
Baue ich die app mit diesem Befehl:
pyinstaller --hidden-import=h5py.defs --hidden-import=h5py.utils --hidden-import=h5py.h5ac --hidden-import=h5py._proxy VOGE.py
Starte ich mein Programm mit der exe-Datei im Verzeichnis "dist" erstellt von pyinstaller, und es scheint, gut zu arbeiten, bis das Programm rufen Sie numpy und Absturz mit dieser Fehlermeldung:
Intel MKL FATAL ERROR: kann Nicht geladen werden mkl_intel_thread.dll
Den mkl_intel_thread.dll ist nicht im software-Verzeichnis; aber mit der Datei kopiert im root-Verzeichnis des Programms bekam ich den gleichen Fehler
Vielen Dank für Ihre Hilfe
InformationsquelleAutor f_ciriolo | 2016-02-18
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstellte ich eine
hook-numpy.py
um mit diesem problem umzugehen:In meinem Fall
conda
installiert die mkl-Bibliotheken zu beschleunigennumpy
undscipy
.pyqtgraph
undnumpy
. Ich würde empfehlen, dass Sie bauen den man-dir-app und führen Sie es dann mit einer Spur verfolgen die Bibliotheken geladen werden.Ich hatte das gleiche Problem mit Pyinstaller und Numpy. Standardmäßig pyinstaller scheint nicht berücksichtigt numpy-Binärdateien, so dass Sie haben, um dieses manuell einzugeben. Sie können die Dateien Bearbeiten ".spec" - Datei "binaries" - variable, aber das wird nur arbeiten für Ihr Aktuelles Programm. Wenn Sie wollen, dass es Arbeit für alle Programme, die Ihrer einzufrieren sollten Sie einen "Haken" und speichern Sie es in C:\Python3*\Lib\site-packages\PyInstaller\Haken.
Musste ich anpassen LeonidR code, um die numpy-hook arbeiten. Ich rewrited es mithilfe eines modernen, pythonic Ansatz, die Liste Verstehens:
"Binaries" ist eine Liste von Tupeln. Das zweite Element des Tupels entspricht dem Ordner, wo Sie wollen zu platzieren, die 'dlls'. In diesem Fall ist leer, also es kopiert Sie direkt in den main Ordner, wo Ihr '.exe " ist.
Ich lief in das gleiche problem. Als workaround habe ich kopiert die DLL ' s manuell ein, wie beschrieben in https://stackoverflow.com/a/34893933/4089081
Ich versuche eine bessere Lösung zu finden, obwohl.
Ich nur update-numpy+mkl auf die neueste version, die Sie herunterladen können numpy+mkl aus hier
j4n7's Antwort war sehr hilfreich, aber es kann oder kann nicht buggy sein.
compat.base_prefix
verwendet umgekehrte Schrägstriche (zumindest für mich), aber Sie dann verketten mit"/Lib/site-packages/numpy/core"
(Schrägstriche).Wie Sie sehen können, es produziert sowohl vorwärts-und rückwärts-Schrägstriche im Pfad.
Hier sind meine Schritte, die mir erlaubt, zu bündeln numpy mkl-Dateien in onefile. Beachten Sie, dass meine bestimmte app verwendet, matplotlib und das problem, das ich erlebte war jedesmal, wenn ich eine Schaltfläche geklickt (tkinter) zur Ausführung der Handlung, ist die app abgestürzt ist.
Schritte
Ersten: Machen Sie einen build der app mit:
Zweiten: Öffnen Sie die
.spec
- Datei und fügen Sie diese an es. Offensichtlich stellen Sie sicher, dass die unter-Dateien tatsächlich erst existieren. Möglicherweise haben Sie nichtPython34
also nur eine freundliche Warnung nicht darum, blind zu kopieren.Dritten: wo sagt er
binaries=None
ändernbinaries=mkl_dlls
.Vierten: Re-run der ersten Schritt. Wenn Ihre app gebaut wird, gehen in die
dist
Ordner und starten Sie Ihre app. Ich hoffe, es funktioniert für Sie!UPDATE: Wenn Sie Intel MKL FATAL ERROR: kann Nicht geladen werden mkl_intel_thread.dll aber man kann deutlich sehen, dass mkl_intel_thread.dll IST IN Ihrem Programm-Verzeichnis, gehen Sie zu numpy/core und buchstäblich kopieren Sie alle Dateien, die mit .dll-Erweiterungen, die Sie nicht haben, und fügen Sie Sie in Ihr Programm-Verzeichnis und re-run. Wenn es funktioniert, toll, aber möchten Sie vielleicht zu löschen ein zu einer Zeit, um herauszufinden, welche Sie brauchen und welche Sie nicht.
Ich aktualisiert das snippet zu bekommen, es funktioniert mit meiner anaconda installation (der Pfad ist anders):
Update: Das geht eben nur für windows. Ich sah auch, dass es eine PR auf github eine genauere beheben. Sehen Sie diese Begehen
Hatte ich 2 Versionen von Python installiert. Eine basic-version von Python installiert, die von Anaconda. Wann läuft meine machine-learning-Skript, das hat den gleichen Fehler. Wenn ich die deinstallation einer der beiden Versionen (in meinem Fall habe ich entfernt Anaconda) alles funktioniert wieder. Ich benutze deeplearning4j Bibliotheks-und offensichtlich hat es Schwierigkeiten, diese dll zu beheben, denn es gibt es mehrere Python-Installationen installiert.