Kein Modul namens bei der Verwendung von PyInstaller
Ich versuche zu kompilieren Sie ein Python-Projekt unter Windows 7 mit PyInstaller. Das Projekt funktioniert, gibt es keine Probleme, aber wenn ich versuche zu kompilieren, das Ergebnis nicht funktioniert. Allerdings bekomme ich keine Warnungen während der Kompilierung gibt es viele in der warnmain.txt
Datei in der build
Verzeichnis: warnmain.txt
Verstehe ich nicht wirklich, diese Warnungen, zum Beispiel "no Modul named numpy.pi" da numpy.pi
ist kein Modul, sondern eine Zahl. Ich habe nie versucht zu importieren numpy.pi
. Ich habe den import numpy
und matplotlib
ausdrücklich. Außerdem bin ich mit PyQt4. Ich dachte, der Fehler könnte im Zusammenhang mit den Bibliotheken.
Aber ich war in der Lage zu kompilieren, ein einfaches Skript, welches verwendet numpy erfolgreich:
import sys
from PyQt4 import QtGui, QtCore
import numpy as np
class MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.pb = QtGui.QPushButton(str(np.pi), self)
app = QtGui.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
Erfolgreich bedeutet hier, dass die erstellte executable-Datei tatsächlich zeigte die gewünschte Ausgabe. Es gibt jedoch auch eine warnmain.txt
- Datei erstellt, die enthält genau die gleichen "Warnungen" wie die vor. Also ich denke, die Tatsache, dass das kompilieren meinem eigentlichen Projekt nicht geben, jeder Erfolg ist nicht (oder zumindest nicht nur) in Bezug auf diese Warnungen. Aber was sonst könnte der Fehler dann? Die einzige Ausgabe, die während der Kompilierung sind "INFO' s und keiner von den ist eine negative Aussage.
Habe ich nicht geben Sie einen zusätzlichen Haken-Verzeichnis, aber der Haken, wo unten, das Standardverzeichnis zu verwenden, soweit ich Lesen konnte, aus der compile-Ausgabe, z.B. hook-matplotlib
ausgeführt wurde. Ich konnte nicht sehen, keine Haken für numpy
weder konnte ich für mein kleines Beispiel-Skript, aber diese funktionierte. Ich verwendet die folgenden imports in meinen Dateien (nicht alle in der gleichen, aber in verschiedenen Einsen):
import numpy as np
import matplotlib.pyplot as ppl
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar
from PyQt4 import QtGui, QtCore
import json
import sys
import numpy # added this one later
import matplotlib # added this one later
Seit PyInstaller nicht geben keine Fehler/Warnungen konnte ich nicht herausfinden, ob das problem auf die Bibliotheken, oder wenn es etwas anderes berücksichtigt werden.
- bekommst du eine Fehlermeldung, wenn Sie versuchen, starten Sie Ihr Programm von der Kommandozeile aus? oder es will einfach nicht starten und nichts gedruckt wird (gilt qt umleiten von stdout an eine andere Stelle, wie ein output-Fenster, das geschlossen wird, wenn Sie zum Absturz?)... weiter zu meinem Kommentar, den ich vermute, Sie haben einen crash (wahrscheinlich von etwas, das verwendet json/xml-Ressourcen oder etwas (nicht importieren xxxx) ... und die Fehlermeldung wird ausgedruckt, um einige QT-Fenster, landet schließen, wenn Sie Abstürzen ... sehen, ob qt.App hat ein redirect=False option oder die etwas auf sich halten stdout
- Interessanterweise, wenn ich etwas zu tun, wie
import numpy.sinh
bekomme ichImportError: No module named sinh
und es ist nur wenn ichimport numpy.numpy.sinh
dass ichImportError: No module named numpy.sinh
. Haben Sie überprüft, PyInstaller, herauszufinden, was schief ging? schnappen Fehler / verbose-Importe / debug info? - Ich habe gerade versucht zu starten die exe-Datei aus dem cmd-ohne Ergebnis, aber für die Zusammenstellung verwendet habe ich das flag
-w
(siehe pythonhosted.org/PyInstaller/#options-for-the-executable-output), die verhindert, dass Windows aus starten Sie eine Konsole für jeden Eingang/Ausgang. Wenn ich das kompilieren ohne-w
ich kann nicht das graphical user interface. Aber das Programm funktioniert, dass beim Aufruf den interpreter, so dass ich nicht denke, dass es ein Fehler drinnen. @ssnobody: ich bin mir bewusst, dass der link, aber es hat nicht bringen keine Vorteile für mich.import numpy.sinh
wird nicht funktionieren, dasinh
ist kein Modul. - Ich muss mich korrigieren, es scheint möglich zu sein, kompilieren, ohne
-w
bekommen und die GUI. Aber wenn ich das Tue, bekomme ich eine Konsole, wo ich sehen kann, für einen sehr kurzen moment (viel zu kurz, um tatsächlich zu Lesen), dass etwas geschrieben steht, aber dann die Anwendung beendet. Die GUI wird nicht angezeigt. Ich versuchen, diese stdout irgendwie in eine Datei, so kann ich tatsächlich zu Lesen. - Danke Mann, dein Vorschlag war genau der richtige Weg! Es gab tatsächlich einige Bibliotheken fehlen (die ich behoben indem man einfach diese zu importieren, siehe meine editierte Frage). Im Falle, du bist nicht der Buchung eine Antwort werde ich einfach zusammenfassen, es in eine kurze. Danke!
- froh zu hören, es hat geklappt 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hatte ein ähnliches problem mit
no module named FileDialog
. Entdeckt, dass mit der version 3.2, die ich verwenden könnte,pyinstaller --hidden-import FileDialog ...
statt ändern mein main-script.
Pyinstaller nicht sehen zweiten Ebene Einfuhren. Also, wenn Sie import-Modul Eine, pyinstaller diese sieht. Aber jedes zusätzliche Modul, das importiert wird in Eine nicht gesehen werden.
Gibt es keine Notwendigkeit, etwas zu ändern in Ihrem python-Skripts. Sie können direkt fügen Sie die fehlenden Importe zu den spec-Datei.
Ändern Sie einfach die folgende Zeile:
zu
Das problem waren einige runtime-Abhängigkeiten von matplotlib. Also die Aufstellung war in Ordnung, während das Programm läuft warf einige Fehler. Da das terminal schließt sich sofort ich wusste gar nicht, dass. Nach einer Umlenkung
stdout
undstderr
zu einer Datei, die ich sehen konnte, dass ich verpasste den BibliothekenTkinter
undFileDialog
. Hinzufügen von zweiimport
s an der Spitze der wichtigsten dieses problem gelöst.Wenn die Sache ist, dass Sie nicht brauchen, Tkinter und Freunde, weil Sie mit PyQt4, dann könnte es am besten zu vermeiden, laden Tkinter etc insgesamt. Schauen Sie in /etc/matplotlibrc und die Standardwerte zu ändern, zu PyQt4, finden Sie in der 'modified' Zeilen unterhalb:
Ich hatte das gleiche problem mit pyinstaller 3.0 und
weblib
. Importieren Sie Sie in der Haupt-hat nicht geholfen.Upgrade auf 3.1, und löschen Sie alle build-Dateien geholfen.