Problem mit PyInstaller

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Pythonierer
User
Beiträge: 41
Registriert: Samstag 13. Januar 2007, 15:26

Hallo liebes Forum!
Ich habe nun einige Zeit an einem Programm gearbeitet, das die Module os, winsound, TkMessageBox, TkFileDialog und Tkinter verwendet. Nun läuft das Programm nach einigem Debuggen auch vollkommen stabil, wenn ich es als pyw-Datei ausführe.
Also wollte ich es mit PyInstaller zu einer Exe machen, was ich zuvor schon des öfteren gemacht hatte. Ich benutze Python 2.4.4 und den neuesten PyInstaller für diese Version. Nun kann ich zwar mit Configure.py PyInstaller konfigurieren und dann mit Makespec.py -F -w MeinProgramm.pyw und Build.py MeinProgramm.spec meine Exe erstellen.
Doch jetzt hab ich das Problem, dass ich selbst zwar die Exe problemlos ausführen kann, sie jedoch auf anderen Computern nicht läuft. Ich hab die Exe drei Leuten zum Testen geschickt, die allesamt kein Python auf dem Computer hatten und nie ging das Programm. Da ich keine zusätzlichen Dateien verwende, weiß ich nicht, woran das liegen kann.
Auch wenn ich die Onefile und Windowed Befehle weglasse und ihnen dann den gesamten Dist-Ordner gebe, klappt es immer noch nicht. Bei ihnen erscheint einzig und allein kurz eine Konsole, die sofort wieder verschwindet.

PyInstaller erstellt allerdings eine WarnMeinProgramm.txt. In dieser steht folgendes:

W: no module named posix (conditional import by os)
W: no module named pwd (delayed, conditional import by posixpath)
W: no module named win32api (delayed import by iu)
W: no module named MacOS (top-level import by Tkinter)
W: no module named posix (delayed, conditional import by iu)
W: no module named org (top-level import by copy)
W: no module named _emx_link (conditional import by os)
W: __all__ is built strangely at line 0 - dis (C:\Python24\lib\dis.pyc)
W: delayed __import__ hack detected at line 0 - encodings (C:\Python24\lib\encodings\__init__.pyc)
W: __all__ is built strangely at line 0 - re (C:\Python24\lib\re.pyc)
W: delayed exec statement detected at line 0 - Tkinter (C:\Python24\lib\lib-tk\Tkinter.pyc)
W: delayed eval hack detected at line 0 - os (C:\Python24\lib\os.pyc)
W: __all__ is built strangely at line 0 - tokenize (C:\Python24\lib\tokenize.pyc)
W: delayed conditional exec statement detected at line 0 - iu (C:\Python24\pyinstaller\iu.pyc)
W: delayed conditional exec statement detected at line 0 - iu (C:\Python24\pyinstaller\iu.pyc)

Ich weiß nicht, ob Ihr damit etwas anfangen könnt, ich wär jedoch über Eure Hilfe unglaublich erfreut.

Schon mal Dank im Voraus, Euer Pythonierer.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Auf den anderen Rechnern Python zu installieren geht nicht? Zu bedenken ist, dass der Download inzwischen gar nicht mehr so groß ist und der Installer den meisten menschen durchaus zuzutrauen ist.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Haben deine Bekannten das selbe Betriebssystem wie du inklusive SP?

Hast du mal Py2Exe einfach mal das selbe probiert?

Ich weiß zwar nicht aber kann es an der pyw Datei liegen, ergibt zwar keinen Sinn weil das Programm ja bei dir läuft aber naja.

Interessant wäre folgendes: du lässt eine Bekannten Python installieren und wenn dann die EXE funktioniert würden sich die PyInstaller Leute über diesen Bugreport freuen. Dann würde irgend etwas beim zusammen suchen der Imports nicht funktionieren.
Pythonierer
User
Beiträge: 41
Registriert: Samstag 13. Januar 2007, 15:26

Erstmal danke an euch beide fürs Antworten.

Sr4ls Idee find ich auch gut, doch nochmal zu Py2Exe. Kann man da auch eine Single-Exe machen? Denn dies war der Grund, warum ich PyInstaller gewählt habe. Naja, die haben übrigens das selbe Betriebssystem wie ich, also weiß ich wirklich nicht, woran das liegen könnte. Vielleicht greift die Exe auf Python-Dateien zu, die sich ja auf deren Computern nicht befinden. Wie auch immer, ich denk damit belass ich es mal.

Wenn noch jemand interessante Vorschläge hat, dann würd ich mich sehr über diese freuen.

Somit verbleibe ich mit herzlichen Grüßen,
Pythonierer!
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Ja man kann mit py2exe Singel-Exe machen :-)

Man kann einmal den Nullsoft Installer nutzen oder die bei py2exe mitgelieferte Funktion:

Beispiel (zum Pfad wenn man sich den Source von SF.net downloadet):
/py2exe-0.6.6/py2exe/samples/singlefile/

Der Py2Exe samples Ordner müsste aber auch im PythonVerzeichnis > Site-packeges > py2exe > samples zu finden sein. Kann es aber leider nicht nachprüfen.
Andy
User
Beiträge: 196
Registriert: Sonntag 1. Januar 2006, 20:12
Wohnort: aus dem hohen Norden....

Pythonierer hat geschrieben:Hallo liebes Forum!
Ich habe nun einige Zeit an einem Programm gearbeitet, das die Module os, winsound, TkMessageBox, TkFileDialog und Tkinter verwendet. Da ich keine zusätzlichen Dateien verwende, weiß ich nicht, woran das liegen kann.
Auch wenn ich die Onefile und Windowed Befehle weglasse und ihnen dann den gesamten Dist-Ordner gebe, klappt es immer noch nicht. Bei ihnen erscheint einzig und allein kurz eine Konsole, die sofort wieder verschwindet.
Hi Pythonierer!

Also ich bin ja der PyInstaller-Fachmann, ne. Nee habe nur ne [wiki=PyInstaller-Tutorial_für_Windows]Anleitung[/wiki] ins Wiki gestellt und hier einen Vergleich zw. PyInstaller u. py2exe reingestellt.

Die WarnMeinProgramm.txt ist normal, bzw. zumindest das überhaupt eine erscheint. Inhaltlich habe ich die jetzt aber nicht gecheckt. Ich würde mal zusätzlich zu den Optionen -F, -W auch noch -K dazunehmen. Mit -K wird nicht nur die von PyInstaller für benötigt gehaltenen Tkinter-Module importiert, sondern die gesamte Tkinter-Bibliothek. Schade, dass Weglassen der Option hat mir in Bezug auf die Größe der EXE, eigentlich Freude bereitet. (Im Gegensatz zu py2exe, wo immer der ganze Tk-Schrott mit gepackt wird)

Habe aber auch noch keine EXE auf einen anderen PC ausprobiert. Übrigens kannst Du in den o. g. Link auch einsehen, wie ich mit py2exe und Tkinter-stand-alone EXE´s klargekommen bin... gar nicht!

Ach das os-Module könnte ich mir jetzt auch als Import-Fehler vorstellen. Siehe When-things-go-wrong

EDIT: Mach doch einfach mal ein einfaches "Hello World" in Konsole und einmal in Tkinter. Nutze Optionen --onefile und für letzteres --onefile --windowed. (nur Leerzeichen - kein Komma setzen) Dann verteile diese an Deine Leute. Bin schon mal gespannt.
Zuletzt geändert von Andy am Samstag 30. Juni 2007, 11:30, insgesamt 1-mal geändert.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Bitte kein Rufmord an py2exe :lol:

Ich hatte mit Singlefile-Executable mit py2exe und Tkinter keine Probleme habe aber nur winz Programme damit gemacht, da ich lieber wx nutze.
Man sollte sich vielleicht nicht für das Eine oder das Andere entscheiden sondern beide griffbereit haben. Die Frage ist wie sich beide entwickeln, da PyInstaller ja deutlich jünger ist.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sr4l hat geschrieben:Die Frage ist wie sich beide entwickeln, da PyInstaller ja deutlich jünger ist.
Deutlich? Als ich 2003 das erste mal über sie gestolpert bin, waren sowohl py2exe, PyInstaller (damals noch MacMillans Installer) und cx_Freeze schon verfügbar.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Leonidas hat geschrieben:
Sr4l hat geschrieben:Die Frage ist wie sich beide entwickeln, da PyInstaller ja deutlich jünger ist.
Deutlich? Als ich 2003 das erste mal über sie gestolpert bin, waren sowohl py2exe, PyInstaller (damals noch MacMillans Installer) und cx_Freeze schon verfügbar.
Oh danke für den Hinweis PyInstaller 2005 aber mcmillan schon seit 2001 (dem habe ich bisher ignoriert)
bei Py2Exe scheine die Anfänge im Jahr 2000 zu liegen.
Antworten