Seite 1 von 1

kann nur defekte *.exe Dateien erzeugen

Verfasst: Mittwoch 27. Dezember 2006, 09:13
von thomson
Hallo,
nachdem ich nun schon stundenlange im Internet und diesem Forum vergeblich nach einer Lösung meines Problems gesucht habe, hoffe ich, dass mir vielleicht jemand von euch helfen kann.


Ich möchte ein bestehendes Python-Skript in eine Exe-Datei umwandeln, so dass ich es auch auf Computern ohne Python-Installation benutzen kann.

Ich habe es inzwischen mit 3 Programmen versucht: Pyinstaller-1.3, McMillan_5b55 und py2exe0.6.5. Alle 3 Programme erzeugen mir auch meine gewünschte Exe-Datei. Nur leider ist sie im Falle von py2exe und mcmillan erst gar nicht zu öffnen.

Bei pyinstaller1.3 gibt es die Besonderheit, wenn ich die exe ohne jegliche Option erstellen will, also:

Code: Alles auswählen

...python\makespec.py file.py
kann ich die erstellte Datei nicht öffnen.
Erstelle ich die Datei jedoch mit mit den Optionen --noconsole und --onefile:

Code: Alles auswählen

...python\makespec.py -Fw file.py
ist meine entstandene Datei funktionsfähig, aber sehr unstabil. Belasse ich sie auf dem Desktop ist sie voll funktionsfähig. Verschiebe ich sie jedoch auf einen usb-stick oder einen anderen Computer sogar ist sie ebenfalls nicht mehr zu öffnen.

Beim Erstellen mit Pyinstaller habe ich folgende warnxxx.txt mit erzeugt bekommen:

Code: Alles auswählen

W: no module named posix (conditional import by os)
W: no module named pwd (delayed, conditional import by posixpath)
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-1.3\iu.pyc)
W: delayed conditional exec statement detected at line 0 - iu (c:\python24\pyinstaller-1.3\iu.pyc)
Ich konnte mir aus dem Ganzen jedoch keinen Reim daraus machen und gehe einmal davon aus, dass ich einfach Python falsch installiert habe. Diese Warnfile.txt wurde unter Python 2.4 erzeugt. Sicherheitshalber habe ich es auch noch mit Python 2.5 versucht. Zusätzlich habe ich immer die dazu gehörige version von pywin32 installiert. Nach dem Installieren habe ich zusätzlich noch die Umgebungsvariable PATH dem Installationspfad angepasst.

Zur Vervollständigung noch:
Meine Python-Datei besitzt eine GUI mit Tkinter erstellt, und greift mehrmals auf math() zu.

Wenn jemand von euch neben dem ganzen Verdauen derzeit noch eine Idee oder Ahnung davon hat, was ich dabei verkehrt mache, wäre ich ihm sehr verbunden.

Vielen Dank im Vorraus und ein schönes Neues.
Thomas

Verfasst: Mittwoch 27. Dezember 2006, 10:33
von rafael
Versuch es mal genau nach diesem Tutorial zu machen und schau dir die Beispiel an, die bei py2exe beiliegen. Da muss man IMHO nur noch die Pfadangaben etc. ändern und das wars :D

Verfasst: Mittwoch 27. Dezember 2006, 14:35
von thomson
Ja, danke schön für den Verweis, aber ich habe das Programm erst über dieses Toturial kennengelernt, wie ich es benutzen muss. Aber wie schon geschrieben, konnte ich die dabei entstandene Exe-Datei nicht öffnen.

Verfasst: Mittwoch 27. Dezember 2006, 14:52
von Leonidas
Seltsam. Versuch doch erstmal ein "Hallo Welt!"-Programm mit py2exe zu einer EXE-Datei zu konvertieren und guck ob wenigstens das geht. Wenn das geht, kannst du versuchen, dich an etwas größeres zu wagen, ob das dann immer noch geht oder nicht.

Wenn das "Hallo Welt!"-Programm aber nicht geht, dann kannst du beide Quelltexte (also dein Programm und die setup.py) hier posten (oder besser ins LodgeIt) und wir sehen mal weiter.