Seite 1 von 1
Mit Pyinstaller Python zur exe und mechanize
Verfasst: Montag 2. November 2009, 13:48
von Tobies
Hallo,
ich habe schon die Such-Funktion verwendet und auch folgendes Thema gefunden:
http://www.python-forum.de/topic-20391.html?highlight=
da hier aber leider der Ersteller nicht zurück geschrieben wurde das Problem auch nicht gelöst.
Ich habe ein Skript ganz einfach das mit mechanize eine Seite aufruft sich einlogt und wieder aus. Das Skript funktioniert einwandfrei. Nun wollte ich eine exe daraus machen mit pyinstaller 1.3.
Als erstes mache ich die *.spec Datei
Danach mach ich die *.exe
Das klappt auch alles wenn ich nun aber das Skript ausführe bekomme ich mehrere import errors.
Ich denke das ich etwas in der makespec.py ändern muss hab aber keine Idee wie das auszusehen hat
Ich hoffe ich habe mich verständlich ausgedrückt
mfg
Verfasst: Montag 2. November 2009, 17:43
von fhoech
(...) bekomme ich mehrere import errors
Wäre schon hilfreich zu wissen, was für Fehler genau auftreten. Aber zuallererst solltest Du eine aktuellere Pyinstaller-Version benutzen, 1.3 ist inzwischen veraltet. Versuch mal stattdessen den 1.4 Pre-Release Snapshot. Btw, Pyinstaller unterstützt in der aktuellen Version unter Windows offiziell nur bis zu Python 2.5. Es gibt aber ein
Patch für 2.6-Support, falls benötigt.
Verfasst: Montag 2. November 2009, 18:42
von paeppi_79
Tobies,
benutzt du vielleicht Tkinter, Bilder, icons... in deinem script. Dies alles muss man in der makespec mit eintragen.
Sieh mal hier nach:
http://www.marcogabriel.com/blog/archiv ... eilen.html
Verfasst: Montag 2. November 2009, 18:51
von Tobies
Das wird mir gesagt:
Code: Alles auswählen
Traceback <most recent call last>:
File "<string>", line2, in <module>
File "C:\Python25\trunk\iu.py", line 458, in importHook
raise ImportError, "No module named %s" % fqname
Import Error: No module named mechanize
@paeppi_79: Genau die Seite hab ich auch gefunden. Das Problem ist nur das ich nicht weiß was ich darein schreiben muss. Das hab ich ja auch schon im ersten Post erwähnt.
Ich verwende keine Bilder, Icons und co nur mechanize.
Verfasst: Montag 2. November 2009, 19:15
von fhoech
Scheint als wäre Pyinstallers EGG-Unterstützung noch fehlerhaft. Versuch mal folgendes:
Lösche die beiden Dateien ClientForm-0.2.10-py2.5.egg und mechanize-0.1.11-py2.5.egg aus Deinem Python25\Lib\site-packages Verzeichnis oder benenn sie um. Dann installiere mechanize entpackt per easy_install:
C:\Python25\Scripts\easy_install.exe -Z mechanize
Verfasst: Montag 2. November 2009, 19:27
von Tobies
Super Danke!
Da wäre ich nie drauf gekommen, weil es immer funktioniert hatte. Ich kann jetzt das Skript als exe ausführen.
Pyinstaller hat jetzt einen Ordner mit mehrern Datein was muss ich in der makespec.py schreiben damit ich nur eine einizge habe?
Verfasst: Montag 2. November 2009, 19:44
von fhoech
Das wäre die Option -F für makespec.py, siehe auch Pyinstaller-Dokumentation:
makespec.py -F skript.py
Verfasst: Montag 2. November 2009, 20:02
von Tobies
Super hat funktioniert!
Und ich dachte ich müsste in der makespec.py etwas umschreiben

.
Vielen Dank

Verfasst: Freitag 13. November 2009, 19:22
von mathi
fhoech hat geschrieben:(...) bekomme ich mehrere import errors
Wäre schon hilfreich zu wissen, was für Fehler genau auftreten. Aber zuallererst solltest Du eine aktuellere Pyinstaller-Version benutzen, 1.3 ist inzwischen veraltet. Versuch mal stattdessen den 1.4 Pre-Release Snapshot. Btw, Pyinstaller unterstützt in der aktuellen Version unter Windows offiziell nur bis zu Python 2.5. Es gibt aber ein
Patch für 2.6-Support, falls benötigt.
Wie kann ich den patch unter Windows einspielen??
Verfasst: Samstag 14. November 2009, 01:20
von Leonidas
mathi hat geschrieben:Wie kann ich den patch unter Windows einspielen??
Es gibt für Windows Ports des Unix-Tools "patch", damit geht das wie unter Unix auch.
Verfasst: Samstag 14. November 2009, 13:06
von fhoech
Oder TortoiseSVN nutzen, das bringt dafür auch eine GUI mit.
Verfasst: Samstag 14. November 2009, 13:50
von mathi
@fhoech:
Danke, hat wunderbar geklappt

)))