Seite 1 von 1
Tkinter py2exe bundle
Verfasst: Freitag 4. Februar 2011, 10:47
von KingNothing
Hi,
ich habe ein einfaches GUI mit Tkinter was ich gerne als einzelne exe packen würde.
zB:
Code: Alles auswählen
from Tkinter import *
root = Tk()
Label(text="Hello World!").pack()
root.mainloop()
dafür habe ich eine einfache setup.py:
Code: Alles auswählen
from distutils.core import setup
import py2exe, sys
sys.argv.append('py2exe')
setup(
options = {'py2exe': { 'bundle_files':1}},
console = [{'script': "test.py"}],
zipfile = None,
)
Wenn ich jetzt das ganze mit py2exe packen lass, bekomme ich eine exe die ca 7MB gross ist, leider kommt beim Ausführen die meldung "Fehler in der Anwendung"... anweisung "written" konnte nicht ausgeführt werden.
Wo liegt hier das Problem mit Tkinter?
Ähnliches funktioniert mit PySide vorbildlich.
Re: Tkinter py2exe bundle
Verfasst: Freitag 4. Februar 2011, 16:30
von Xynon1
Ich würde sagen das liegt an deinem "bundle_files", das verträgt sich offensichtlich nicht. Lass die Option weg oder nimm dort die 3 statt der 1
Zudem solltest du bei "setup" für Tkinter explizit ["Tkconstants", "Tkinter", "tcl"] den "excludes" zuweisen. Und auch wenn es nur ein Beispielscript ist, sauber halten sollte man es dennoch
Code: Alles auswählen
import Tkinter as tkinter
if __name__ == "__main__":
root = tkinter.Tk()
tkinter.Label(root, text="Hello World!").pack()
root.mainloop()
Du hast dem Label kein "master" hinzugefügt und *-Importe sind auch nicht schön.
Re: Tkinter py2exe bundle
Verfasst: Montag 14. Februar 2011, 08:34
von KingNothing
Xynon1 hat geschrieben:Ich würde sagen das liegt an deinem "bundle_files", das verträgt sich offensichtlich nicht. Lass die Option weg oder nimm dort die 3 statt der 1
Leider es für mich ein absolutes muss, am Ende eine einfache exe zu erhalten. Gibt es ein Workaround für py2exe+Tkinter?
Re: Tkinter py2exe bundle
Verfasst: Montag 14. Februar 2011, 09:06
von Xynon1
Nicht das ich wüsste, ich versteh auch die Intention dahinter nicht,
1. Wieso überhaupt eine "exe" ?
2. Wieso eine nur eine einzige Datei als "exe" für ein Programm ?
Wenn es eine einzelne "exe" sein muss, bleibt dir warscheinlich nichts anderes übrig als ein Container der dann beim ausführen entpackt wird, sprich eine Installation.
Re: Tkinter py2exe bundle
Verfasst: Montag 14. Februar 2011, 09:29
von KingNothing
Einfach aus Gründen des Handlings. Ich finde eine einfache exe ist am bequemsten.
Ich möchte meinen Kollegen nicht zumuten das jeder Python installieren muss. Das mit dem Installer habe ich auch schon gemacht, möchte ich aber ungern hier verwenden da keine Admin rechte auf den PCs vorhanden sind (ich weiss es geht trotzdem, ist aber unschön). Auch ein Installer der nach %TEMP% entpackt und dann startet ist mir zu frickelig.
Ich denke dann bleibe ich wohl einfach bei PySide/PyQt auch wenn Tkinter für meine Anwendungen schneller/eleganter wäre.
Re: Tkinter py2exe bundle
Verfasst: Montag 14. Februar 2011, 09:34
von Xynon1
Dann nimm doch einfach ein Zip-Archiv entpacken sollte wohl noch jeder hinbekommen.
Zudem könnte man noch einfach in das Zip eine "setup.exe" - welche nicht die Tkinter Applikation ist, sondern zB. eine Verknüpfung auf dem Destop erzeugt.
Finde ich aber im Grunde dennoch Unsinnig, da Python zu installieren, nun keine wirkliche Herrausforderung ist
Edit:
Tkinter ist denke ich, nicht mal anährend so elegant wie QT, aber jetzt komm ich irgendwie nicht mehr mit - Es ist zu schwierig Python zu installieren, aber die QT-Libs mit zu schleppen ist nicht das Problem

Re: Tkinter py2exe bundle
Verfasst: Montag 14. Februar 2011, 10:22
von BlackJack
@Xynon1: Bei Qt könnte die Lizenz der verwendeten Python-Anbindung eventuell ein Klotz am Bein sein. PyQt ist ja AFAIK immer noch GPL oder teuer.
Re: Tkinter py2exe bundle
Verfasst: Montag 14. Februar 2011, 10:30
von Hyperion
BlackJack hat geschrieben:PyQt ist ja AFAIK immer noch GPL oder teuer.
Da müßte man dann wohl zu PySide greifen. So langsam nähern die sich ja Version 1.0

Re: Tkinter py2exe bundle
Verfasst: Montag 14. Februar 2011, 10:44
von Xynon1
@BlackJack
Das ist ja genau das was mich an der Ausage von "KingNothing" wundert -- inwiefern Hilft bei seinem Problem, eine einzelne Exe haben zu wollen, PySide mit PyQt ???
Re: Tkinter py2exe bundle
Verfasst: Montag 14. Februar 2011, 11:52
von The Spirit
hi.
habe mich vor einiger zeit auch lange mit tkinter und EINER exe beschäftigt, aber letztendlich feststellen müssen, das es nicht geht.
ich mach jetzt letztendlich einen ordner mit allen nötigen daten (in der auch die exe drin liegt) mittels py2exe.
die exe im ordner wird dann für die kollegen einfach mittels einer verknüpfung auf den desktop gelegt oder wo auch immer sie die haben wollen.
das war für mich letztendlich die einfachste lösung vor allem ohne installer oder python installation.
und das klappt heute noch einwandfrei und die kollegen sind zufrieden das ihr pc nicht voll wird mit installationen die sie nicht brauchen.
Re: Tkinter py2exe bundle
Verfasst: Montag 14. Februar 2011, 12:01
von Xynon1
Mir sind persönlich sind Setups lieber, weil man theoretisch eine sauber Übersicht über sein OS bekommt. Vorausgesetzt das alles sauber an die entsprechenden Stellen installiert wird -- aber das ist bei Windows sowieso eine einzige Katastrophe.
Re: Tkinter py2exe bundle
Verfasst: Montag 14. Februar 2011, 12:37
von KingNothing
Xynon1 hat geschrieben:@BlackJack
Das ist ja genau das was mich an der Ausage von "KingNothing" wundert -- inwiefern Hilft bei seinem Problem, eine einzelne Exe haben zu wollen, PySide mit PyQt ???
Naja mit PySide/PyQt klappt das Single-File-exe-Bundle auf anhieb - ganz im gegensatz zum mitgelieferten Tkinter.
Xynon1 hat geschrieben:Mir sind persönlich sind Setups lieber, weil man theoretisch eine sauber Übersicht über sein OS bekommt. Vorausgesetzt das alles sauber an die entsprechenden Stellen installiert wird -- aber das ist bei Windows sowieso eine einzige Katastrophe.
Ja schon, aber nicht auf diesen PCs. Die Nutzer haben auf C:\Programme kein Zugriff. Ausserdem handelt es sich wirklich um kleine Tools, da wäre eine einfache exe schon handlich.
Re: Tkinter py2exe bundle
Verfasst: Montag 14. Februar 2011, 13:59
von Xynon1
KingNothing hat geschrieben:Ja schon, aber nicht auf diesen PCs. Die Nutzer haben auf C:\Programme kein Zugriff. Ausserdem handelt es sich wirklich um kleine Tools, da wäre eine einfache exe schon handlich.
Gerade da lohnt sich doch nicht für jede "exe" ein riesen Framework mit zu schleppen.
Wenn der Nutzer auf C:\Programme nicht zugreifen kann, dann frage ich mich was die den ganzen Tag vor dem Computer machen

Du meintest sicher keine Schreibrechte auf C:\Programme haben, oder ? - Aber selbst hier können sie doch zB. PDFs mit Adobe Reader oder MS Office ausführen...
Also wieso dort nicht einfach Python hinzufügen und eine Verknüpfung auf dem Desktop anlegen mit dem Ziel "C:\Programme\Python27\python.exe C:\Tools\script.py" ? Ich seh da keinen großen Unterschied zu einem anderen Programm.