pyinstaller Tkinter Image Problem

Fragen zu Tkinter.
Antworten
!pro
User
Beiträge: 4
Registriert: Mittwoch 26. Juli 2017, 21:37

Hi Leute,
stehe vor einen kleinen Problem und komme nicht auf die Lösung.
Habe per Tkinter eine Gui für ein kleinen Programm geschrieben. In dieser GUI binde ich ein ico und mehrer statische gifs ein.
Der Pfad zu den Bilddatein ist absolut, habe es aber auch schon mit relativen Pfaden versucht(was natürlich nichts nützt da er trotzdem nach dem Bild an der Stelle sucht).
Mein Problem ist das ich per pyinstaller versuche eine standalone exe zu erstellen. Soweit klappt es auch wenn ich die Bilder im Ordner belasse und das Programm auf meinem Rechner ausführe, es klappt auch wenn ich die Bilder aus dem Programm nehme , dann natürlich auch auf anderen Rechnern.
Die Befehle die ich zum erstellen verwende sind

Code: Alles auswählen

pyinstaller xy.py --standalone --name xy --clean --noconsole -- icon=xy.ico
soweit ich es aus dem Kopf weiß... habe gerade meinen Arbeitsrechner nicht da.
Wie gesagt das erstellen geht soweit.
Meine Frage kann beim erstellen iwi die Bilddatein einbinden sodass sie auf einem fremden PC laufen und nicht an einen festen Pfad gebunden sind?
Ach so.. einen verrückten Ansatz den ich versucht habe war mit base64 das bild zu encoden und dann in bytes zu decoden um es so einzubinden, hat leider nicht geklappt.
Gruß
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Pfade relativ zum ausgeführten Code sind dIe Lösung.

Hast du zb

code.py
super-bild.gif

im verzeichnis einträchtig nebeneinander liegen, dann ist der absolute Pfad des Bildes mit

SUPER_BILD_PFAD = os.path.join(os.path.dirname(__file__), “super-bild.gif”)

in code.py zu ermitteln. Auch nach Installation .
!pro
User
Beiträge: 4
Registriert: Mittwoch 26. Juli 2017, 21:37

Danke für die Hilfe.
Leider nützt es nichts bei der standalone exe. Wollte nur die exe verteilen keinen Ordner mit zusätzlichen Daten.
Dachte das es eine elegante Lösung gibt die Bilder "einzubinden" sodass nur die exe am Ende über bleibt.
Benutzeravatar
__blackjack__
User
Beiträge: 13006
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@!pro: Das geht so ziemlich grundsätzlich nicht. Auch nur eine EXE wird zu einem Ordner mit Dateien entpackt wenn Du sie ausführst.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
!pro
User
Beiträge: 4
Registriert: Mittwoch 26. Juli 2017, 21:37

Dann muss ich mich damit wohl abfinden, das ich auf Grafiken oder auf eine standalone verzichten muss ^^
Danke erstmal für die Antworten.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wie bitte machst du denn eine stand-alone EXE ohne Grafiken? Es braucht doch immer mindestens den Interpreter & dein Skript. Und der Interpreter kann ohne Dutzende oder gar hunderte Dateien nicht arbeiten. Was macht da jetzt genau ein GIF mehr aus?
Antworten