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.

  • Gibadenmodul mit py2exe, pyinstaller einbeziehen
  • Py2Exe openpyxl Importerror
  • Py2exe `ImportError: Kein Modul namens backend_tkagg`
  • Ignorieren library.zip in py2exe
  • Py2exe kann keine ausführbare Datei generieren
  • Dll lade fehler in python ausführbare von pywin32 gemacht
  • Kann 64-Bit-Python 32-Bit-Windows-Dateien erstellen
  • Py2exe Fehler: [Errno 2] Keine solche Datei oder Verzeichnis
  • Py2Exe "Fehlende Module"
  • Wie python Skript auf Excel vba anrufen?
  • Py2exe - "Die folgenden Module fehlen"
  • Python ist die beste Programmiersprache der Welt.