ImportError: kann nicht importieren Publisher

Ich habe erfolgreich eine ausführbare Version (Py2exe, Pyinstaller) meiner Anwendung erstellt. Wenn ich versuche, die App aus .exe auszuführen, bekomme ich in der Protokolldatei einen Fehler wie folgt:

Traceback (most recent call last): File "CreateAS.pyw", line 8, in <module> ImportError: cannot import name Publisher

Ich bin wirklich in diesem Teil fest. Könnten Sie mir helfen?

Vielen Dank.

Irgendwelche Antworten / Kommentare?

3 Solutions collect form web for “ImportError: kann nicht importieren Publisher”

Ich vermute, dass Sie eine Version von wxPython verwenden , die >= 2.8.11.0 ? Wenn ja, hat sich das Paket wx.lib.pubsub geändert. Diese Seite beschreibt die Änderungen. Es gibt auch einen Thread auf der wxPython Mailingliste hier , die darüber spricht.

Um dies alles in meinem Projekt zu machen, habe ich hier das folgende beschrieben , das Teil des oben genannten Mailing List Threads war. Ich fasse unten zusammen:

Die viel bevorzugte Alternative (dh keine Hacks!), Wenn du es hacken kannst (sorry!) Ist, das gleiche Messaging-Protokoll wie v1 zu verwenden, aber in der neuesten API heißt das "arg1":

 # only in app's startup module from wx.lib.pubsub import setuparg1 # in all modules that use pubsub from wx.lib.pubsub import pub as Publisher 

Und ersetzen jedes Vorkommen von "Publisher()." by "Publisher." "Publisher()." by "Publisher."

Dann in meinem setup.py Skript musste ich folgendes den Optionen hinzufügen:

 options = { "py2exe": {"packages": ['wx.lib.pubsub']} } setup(data_files=data_files, windows=[ {'script': 'btpos.py'], options=options) 

Sie sollten jetzt in der Lage sein, eine ausführbare mit der neuen Version von pubsub zu bauen, aber mit dem alten api. Vielleicht möchten Sie auch die neue v3 api von pubsub ausprobieren. Wenn Ihr Projekt nicht zu groß ist, können Sie wahrscheinlich ohne zu viel zu ändern.

Versuche so:

 from wx.lib.pubsub import setuparg1 from wx.lib.pubsub import pub as Publisher 

Dann: Ersetzen Sie jedes Vorkommen von Publisher() von Publisher.

Ich habe einen Beispielcode verwendet, der wx.lib.pubsub verwendet hat, um zu studieren und stieß auf dieses Problem auch.

Um dieses Problem einfach zu beheben, habe ich gerade die Zeile geändert:

 from wx.lib.pubsub import Publisher as pub 

Nach:

 from wx.lib.pubsub import pub 

Die akzeptierten Antworten haben Links, die es immer noch richtig machen, aber aus Gründen der Einfachheit habe ich diese Lösung hinzugefügt, weil die akzeptierte Lösung ein wenig verwirrend war.

  • Py2exe kann kein Modul aus einem anderen Verzeichnis importieren
  • Wie korrigiere ich TCL_LIBRARY und TK_LIBRARY mit py2exe
  • Wie man Pakete Datei, py2exe enthalten
  • Wie kann ich eine py2exe-Applikation debuggen, die nicht richtig initialisiert wurde.
  • Cx_Freeze und Plotly
  • Py2exe python24 numpy error AttributError "dtype"
  • Welche Visual C ++ Redistributable-Paket sollte ich mit py2exe verwenden?
  • Fehler: "MSVCP90.dll: Keine solche Datei oder Verzeichnis", obwohl Microsoft Visual C ++ 2008 Redistributable Package installiert ist
  • Outputed py2exe exe wird nicht nur ausgeführt, wenn signiert: ImportError
  • Multiprocessing Problem [pyqt, py2exe]
  • Kein Modul namens py2exe
  • Python ist die beste Programmiersprache der Welt.