Pyinstaller Icon-Problem

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
Markus12
User
Beiträge: 195
Registriert: Dienstag 6. März 2007, 19:32
Wohnort: Frankfurt am Main

Hallo,
habe mich mit Pyinstaller beschäftigt, auch einige Scripts compiliert und das hat auch geklappt.

So nun habe ich mal ausprobiert mir eigene Icons für mein Programm zurecht zu schneiden. Ich meine die beim Tkinterfenster ganz links oben links neben dem Titel stehen ;) Nicht das der Exe-Datei.

Ich habe deswegen mir eine JPG-Datei genommen, in Paint auf 16x16 Pixel verkleinert und als 24-Bit-Bitmap abgespeichert. Andere Formate klappen nicht.

1.Frage: Besteht eine 24-Bit-Bitmap aus einer Farbenauflösung von 24 Bits?
Oder ist sie 24 Bit groß? ^^


Wenn ich dieses Icon dann in mein Programm einbinde, klappt alles wunderbar, wenn ich es in eine ausführbare Datei compiliere, klappt das allerdings nicht mehr und das standard-Icon ist da. Zudem öffnet sich mein Exe-file nicht mehr, wenn mein Icon im selben Ordner ist. Ich habe es in meinem Programmcode so gelöst, dass wenn das Icon im selben Ordner wie das Script ist, dann das Icon übernimmt, ist kein Icon da, dann setzt es kein individuelles Icon. Deswegen klappt mein Script, wenn das Icon nicht mehr im selben Ordner ist...

In der dazugehörigen Text-datei mit den Warnungen von Pyinstaller steht eine riesen Fehlermeldung, die ich hier im Forum auch schon bei einem anderen Pyinstaller-Problem gesehen habe.


Wie ich das Icon gesetzt habe:

Code: Alles auswählen

from Tkinter import*
self.fenster=Tk()
self.fenster.iconbitmap('MeinIcon.ico') #Richtig?
self.fenster.mainloop()
(Miniausschnitt - Nur vom Aufbau)


Viele Grüße Markus :-)

PS: Bitte keine Vorschläge von anderen Python-Comilern^^
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Markus12 hat geschrieben:1.Frage: Besteht eine 24-Bit-Bitmap aus einer Farbenauflösung von 24 Bits?
Oder ist sie 24 Bit groß? ^^
Kannst du selbst gucken. Wenn sie eine Datei 3 Byte groß ist, ist sie 24 Bit groß. Ist deine Bitmap 3 Byte groß? Die Frage kannst du dir ja selbst beantworten.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Markus12 hat geschrieben:Wenn ich dieses Icon dann in mein Programm einbinde, klappt alles wunderbar, wenn ich es in eine ausführbare Datei compiliere, klappt das allerdings nicht mehr und das standard-Icon ist da. Zudem öffnet sich mein Exe-file nicht mehr, wenn mein Icon im selben Ordner ist. Ich habe es in meinem Programmcode so gelöst, dass wenn das Icon im selben Ordner wie das Script ist, dann das Icon übernimmt, ist kein Icon da, dann setzt es kein individuelles Icon. Deswegen klappt mein Script, wenn das Icon nicht mehr im selben Ordner ist...
Das die Exe nicht startet ist allerdings komisch. Bekommst du irgendeine exception oder sowas wenn das Logo daneben liegt?
Sonst geh mal so vor, dass das Bild im PyInstaller Skript mit eingepackt ist? Der Zugriff auf solch zusätzlich mitgeführte Dateien muss zudem etwas spezieller behandelt werden. Bei einem Self Extractable- Exe geht das über das Archive-Handling
Markus12
User
Beiträge: 195
Registriert: Dienstag 6. März 2007, 19:32
Wohnort: Frankfurt am Main

danke schonmal für die Antwort :-)
Ja stimmt, 3 Byte=24 Bit, darauf hätte ich auch selbst kommen können *g*

@Zap:
Um es genau zu sagen, ich habe ein Programm geschrieben, dass mir beim Vokabeln lernen hilft. Das Programm hat viele Funktionen und hat deswegen 500 Zeilen, deswegen poste ich es hier mal nicht.
Das Programm greift aber auf Dateien jetzt schon zu. Einerseits auf eine Datei, die die Sprachen enthält (fragt nicht warum ;)) und desweiteren auf eine JPG-Bild mit dem späteren Hintergrund. Außerdem noch auf eine Hilfetextdatei. Das klappt alles wunderbar. Ich vermute es hängt einfach mit dem Icon zusammen. Mein Programm scheint das Icon einfach nicht verarbeiten zu können...

Sprich, das Problem ist, dass wenn es das Icon laden soll, dann startet es erst gar nicht - Das ist aber immer so, wenn es eine Exception im Programmverlauf gibt, dann stürzt das Programm ab. Das ist normal. Das Problem ist also, dass er das Icon nicht verarbeiten kann.


Deine Idee ist mir neu - Werde mich aber direkt damit beschäftigen. Danke dir!

Viele Grüße Markus :-=
Markus12
User
Beiträge: 195
Registriert: Dienstag 6. März 2007, 19:32
Wohnort: Frankfurt am Main

Hier sind die Exceptions aus der Textdatei...

W: no module named posix (conditional import by os)
W: no module named optik.__all__ (top-level import by optparse)
W: no module named fcntl (top-level import by tempfile)
W: no module named readline (delayed, conditional import by cmd)
W: no module named readline (delayed import by pdb)
W: no module named pwd (delayed, conditional import by posixpath)
W: no module named MacOS (top-level import by Tkinter)
W: no module named org (top-level import by pickle)
W: no module named _imaging_gif (top-level import by GifImagePlugin)
W: no module named posix (delayed, conditional import by iu)
W: no module named fcntl (conditional import by subprocess)
W: no module named org (top-level import by copy)
W: no module named _emx_link (conditional import by os)
W: no module named optik.__version__ (top-level import by optparse)
W: no module named Carbon (conditional import by tempfile)
W: __all__ is built strangely at line 0 - __future__ (C:\Programme\Python\lib\__future__.pyc)
W: delayed conditional __import__ hack detected at line 0 - doctest (C:\Programme\Python\lib\doctest.pyc)
W: delayed exec statement detected at line 0 - doctest (C:\Programme\Python\lib\doctest.pyc)
W: delayed __import__ hack detected at line 0 - encodings (C:\Programme\Python\lib\encodings\__init__.pyc)
W: delayed conditional __import__ hack detected at line 0 - Image (C:\Programme\Python\lib\site-packages\PIL\Image.pyc)
W: delayed exec statement detected at line 0 - Tkinter (C:\Programme\Python\lib\lib-tk\Tkinter.pyc)
W: __all__ is built strangely at line 0 - optparse (C:\Programme\Python\PyInstaller-1.3\optparse.pyc)
W: __all__ is built strangely at line 0 - dis (C:\Programme\Python\lib\dis.pyc)
W: delayed eval hack detected at line 0 - os (C:\Programme\Python\lib\os.pyc)
W: delayed conditional __import__ hack detected at line 0 - unittest (C:\Programme\Python\lib\unittest.pyc)
W: delayed conditional __import__ hack detected at line 0 - unittest (C:\Programme\Python\lib\unittest.pyc)
W: __all__ is built strangely at line 0 - tokenize (C:\Programme\Python\lib\tokenize.pyc)
W: delayed conditional exec statement detected at line 0 - iu (C:\Programme\Python\PyInstaller-1.3\iu.pyc)
W: delayed conditional exec statement detected at line 0 - iu (C:\Programme\Python\PyInstaller-1.3\iu.pyc)
W: delayed exec statement detected at line 0 - bdb (C:\Programme\Python\lib\bdb.pyc)
W: delayed eval hack detected at line 0 - bdb (C:\Programme\Python\lib\bdb.pyc)
W: delayed eval hack detected at line 0 - bdb (C:\Programme\Python\lib\bdb.pyc)
W: delayed __import__ hack detected at line 0 - pickle (C:\Programme\Python\lib\pickle.pyc)
W: delayed __import__ hack detected at line 0 - pickle (C:\Programme\Python\lib\pickle.pyc)
W: delayed eval hack detected at line 0 - gettext (C:\Programme\Python\lib\gettext.pyc)
W: delayed __import__ hack detected at line 0 - optik.option_parser (C:\Programme\Python\PyInstaller-1.3\optik\option_parser.pyc)
W: delayed conditional eval hack detected at line 0 - warnings (C:\Programme\Python\lib\warnings.pyc)
W: delayed conditional __import__ hack detected at line 0 - warnings (C:\Programme\Python\lib\warnings.pyc)
W: __all__ is built strangely at line 0 - optik (C:\Programme\Python\PyInstaller-1.3\optik\__init__.pyc)
W: delayed exec statement detected at line 0 - pdb (C:\Programme\Python\lib\pdb.pyc)
W: delayed conditional eval hack detected at line 0 - pdb (C:\Programme\Python\lib\pdb.pyc)
W: delayed eval hack detected at line 0 - pdb (C:\Programme\Python\lib\pdb.pyc)
W: delayed conditional eval hack detected at line 0 - pdb (C:\Programme\Python\lib\pdb.pyc)
W: delayed eval hack detected at line 0 - pdb (C:\Programme\Python\lib\pdb.pyc)



@Zap:
Die Seite hat mir leider nichts genützt. Ich habe von oben bis mindestens zur Mitte gelesen, aber ich hatte überhaupt keinen Plan was die da erzählen. Da gibt es anscheinend viele Funktionen, um etwas zu testen, ist aber wirklich mies erklärt..

Weißt du, wie man das Icon mit in den Exefile integriert?
Markus12
User
Beiträge: 195
Registriert: Dienstag 6. März 2007, 19:32
Wohnort: Frankfurt am Main

Hat dazu keiner eine Idee? :(
schlangenbeschwörer
User
Beiträge: 419
Registriert: Sonntag 3. September 2006, 15:11
Wohnort: in den weiten von NRW
Kontaktdaten:

Ich hab noch nie mit PyInstaller gearbeitet, aber hast hast du PyInstaller gesagt, welche Dateien und Libs alle genutzt werden?

edit: ok, iconbitmap == wm_iconbitmap
Markus12
User
Beiträge: 195
Registriert: Dienstag 6. März 2007, 19:32
Wohnort: Frankfurt am Main

schlangenbeschwörer hat geschrieben:Ich hab noch nie mit PyInstaller gearbeitet, aber hast hast du PyInstaller gesagt, welche Dateien und Libs alle genutzt werden?

edit: ok, iconbitmap == wm_iconbitmap
Nein habe ich nicht... Ich dachte, das macht er automatisch! Wenn ich es ohne das icon mache, klappt ja auch alles. Es wird ein Fenster aufgebaut, also wurde Tkinter erfolgreich importiert, dann noch zum Beispiel das Modul tkFileDialog, auch alles richtig, es scheint zu funktionieren -.-

Wie kann man ihm denn sagen, welche er mitnehmen soll, ein Versuch ist es ja wert!

Und was meinst du mit:

edit: ok, iconbitmap == wm_iconbitmap

Grüße Markus
schlangenbeschwörer
User
Beiträge: 419
Registriert: Sonntag 3. September 2006, 15:11
Wohnort: in den weiten von NRW
Kontaktdaten:

Markus12 hat geschrieben:Wie kann man ihm denn sagen, welche er mitnehmen soll, ein Versuch ist es ja wert!
wie gesagt, ich hab noch nie mit PyInstalle gearbeitet. Ich kenn das nur von py2exe, dort muss man in einem Script Dateien angeben, die mit verarbeitet werden sollen. (Auch Libs, die nicht "Standard" sind, wzB tix).
Markus12 hat geschrieben: Und was meinst du mit:
edit: ok, iconbitmap == wm_iconbitmap
Ich dachte erst, das wär was anderes, aber "iconbitmap" ist nur ein Alias für "wm_iconbitmap"
Markus12
User
Beiträge: 195
Registriert: Dienstag 6. März 2007, 19:32
Wohnort: Frankfurt am Main

Achso, ok danke :)
Ich schau nochmal, ich glaube als Argument beim Erstellen des Spec-files kann man den Pfad für alle Libs übergeben, werde ich mal versuchen, danke!

Grüße Markus :)
Antworten