Pyinstaller und Icons

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
The Spirit
User
Beiträge: 276
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

HI.
Nutze aktuell Pyinstaller um one file exe files zu machen.
Schon mal vorweg, das muss leider so sein, kann da nix gegen machen. Wird leider so gewünscht.
Programm ist fertig und es klappt auch einwandfrei.
Bei makespec.py nutze ich noch --onefile -w und --tk.
Das klappt auch einwandfrei und die exe läuft.
Packe ich jetzt entweder ein icon in meinen quellcode als icon für das fenster, oder ein icon in pyinstaller, damit die exe nachher ein icon hat (oder mache ich beides) startet die exe kurz (ich sehe das windows lädt) aber das programm beendet sich wieder ohne jemals offen gewesen zu sein.
Also es startet also nicht wirklich, ich seh nur am spinner unter windows, das er es wohl versucht zu starten.
Hat jemand ne idee woran das liegen kann oder wo ich noch drehen könnte?
Wenn ich das icon im TK fenster einbinden mache ich das mit

Code: Alles auswählen

root.iconbitmap("icons.ico")
Bei makespec.py hänge ich dann noch --icon=ico.ico
Hoffe ihr habt da ein paar tips für mich.
Danke
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Starte die *.exe mal in der Konsole, vielleicht siehst du ja eine Fehlermeldung...
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
The Spirit
User
Beiträge: 276
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

dort kommt leider auch keine info.
sieht da auch so aus, als wenn er versucht zu starten (nächster "prompt") kommt ca. 5 sekunden verzögert.
aber das war´s dann auch schon.
trotzdem danke
Rekrul
User
Beiträge: 78
Registriert: Dienstag 7. Dezember 2010, 16:23

Die *.exe wird in einem temporären Ordner entpackt. Den kannst du mittels der Umgebungsvariable _MEISPASS2 herausfinden:

Code: Alles auswählen

os.environ[ '_MEIPASS2']
Wenn du deine Icons also wie folgt in deinem Spec-File einbindest

Code: Alles auswählen

icons = Tree('path_to_icons', 'Icons')
kannst du so drauf zugreifen:

Code: Alles auswählen

root.iconbitmap(os.path.join(os.environ[ '_MEIPASS2'], 'Icons', 'icons.ico'))
Vielleicht funktioniert das ja.
The Spirit
User
Beiträge: 276
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

das heist also wenn ich dich richtig verstehe:
exe ohne icon bauen und dann "von hand" das exe icon einbinden, oder?
Rekrul
User
Beiträge: 78
Registriert: Dienstag 7. Dezember 2010, 16:23

Nein, du baust die exe schon mit dem Icon.

Als erstes erstellst du dir ein Spec-File wie gewohnt:
python makespec.py ... --onefile -w --tk ...

Dann editierst du das spec-file und sagst ihm, wo der Ordner mit deinen Icons liegt und wie du ihn erreichen möchtest (in diesem Fall mit Icons).

Code: Alles auswählen

icons = Tree('path_to_icons', 'Icons')
...
exe = EXE(..., a.binaries + icons, ...)
Abschließend noch bauen: python Build.py ...
Und erreichen kannst du die Icons wie schon erwähnt.
The Spirit
User
Beiträge: 276
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

ok.
du meinst also, bei makespec.py nicht das icon mit einbinden.
das fertige spec file dann aber von hand so umändern, das ich das icon doch wieder drin haben will.
oder?
Rekrul
User
Beiträge: 78
Registriert: Dienstag 7. Dezember 2010, 16:23

The Spirit hat geschrieben:ok.
du meinst also, bei makespec.py nicht das icon mit einbinden.
das fertige spec file dann aber von hand so umändern, das ich das icon doch wieder drin haben will.
oder?
Richtig.
Antworten