Hi,
ich möchte aus einem Python script eine ausführbare Datei für Windows
machen. Also eine exe Datei.
Soweit geht das auch, aber wenn ich mit tkinter ein Bild einbinde läuft
die exe nicht mehr!
1
photo=PhotoImage(file='mail.png')
Die exe wird so erstellt
1
pyinstaller.py--noconsoleD:\python\test.py-F
Wenn ich die neu erstellte exe ausführe bekomme ich folgenden Fehler
angezeigt.
1
test returned -1
Weiss jemand zufällig wie ich das Problem lösen kann?
Ich bin mir nicht ganz sicher, aber meiner Meinung hast du was falsch
gemacht. Schau dir mal das hier an
https://mborgerson.com/creating-an-executable-from-a-python-script
ich nutze den pyinstaller nicht oft, bei mir hat er aber die letzten
male immer super funktioniert( das ganze mit QT, CV, pyserial und noch
weiteren Paketen).
meiner Meinung müsste dein Befehl anders ausschauen.
ich würde mal in das Verzeichnis wechseln, in der deine py liegt.
Ich kann mir noch vorstellen, dass die Angabe des Bilds innerhalb der
py-Datei absolut ist. Wenn du deine exe aus einem anderen Verzeichnis
erstellst, findet er dieses absolute Bild nicht. Also davor
cd D:\python\
und dannach halt die exe ohne ganzen Pfad erstellen.
Hallo Jochen.
Jochen schrieb:> Ohne dem Bild in der test.py geht das ohne Probleme mit dem Befehl
Ich kenne mich weder mit Python unter Windows noch dem Pythoninstaller
aus.
Aber ich habe trozdem den Verdacht, dass es
A) daran liegt, dass Du auf eine Datei zugreifst, die ausserhalb des
Skriptes liegt.
B) Ausserdem kann photoimage nativ nur GIF und PGM/PPM Formate. Ob PNG
so ohne weiteres in PGM/PPM subsumierbar ist, weiss ich nun auch nicht,
aber anscheinend scheint es ja bei Dir ohne den Pythoninstaller zu
funktionieren.
Möglicherweise ist aber dort noch etwas zwischengeschaltet, das der
Pythoninstaller nicht verarbeiten kann.
zu A)
In Python gibt es die Möglichkeit, die Bilder base64 gewandelt direkt in
den Code einzufügen ("inline").
zu base64: https://de.wikipedia.org/wiki/Base64
Es gibt für Python3 ein eigenes base64 modul:
https://docs.python.org/3/library/base64.html
Das kannst Du zum Wandeln schon verwenden. In Deinem Falle aber nicht im
code, sondern manuell in der Konsole, und das Gewandelte dann in den
Code einbringen.
Zu B)
Wandle das Bild halt in GIF um, und verwende dieses. Auch GIF lässt sich
dann noch base64 wandeln.
Beispiel mit Python3:
https://www.mikrocontroller.net/wikifiles/f/f6/PyKiCad-CaseSensitiveLibCure_RevD_13Apr2015.zip
Die Buttonbilder für die Sprachumschaltung sind dort so eingebunden.
Mit freundlichem Gruß: Bernd Wiebus alias dl1eic
http://www.l02.de
Hallo jochen.
Jochen schrieb:> ich versuche gerade die ersten versuche mit base64, muss ich mir für> Python3 base64 erst installieren?
Zumindest in Debian Jessy nicht.
Das sollte so funktionieren wie im Screenshot
"Python3_Base64-Encoding_06Mar2016.png" im Anhang.
>
Jochen schrieb:> muss ich mir für> Python3 base64 erst installieren?
Nein, das gehört zu den standard Python Modulen. Müsstest du es erst
installieren, dann würde das ganze schon beim import scheitern.
Die encode() funktion möchte ein Byte-Objekt haben, kein String.
Also:
1
original_string = b'This is the data, in the clear.'
statt:
1
original_string = 'This is the data, in the clear.'
Habe es nochmal eine neue Python Datei erstellt. Nun geht es...
Bisher habe ich das Bild so eingebunden
photo=PhotoImage(file='mail.gif')
Jetzt habe ich das Bild encodet. Wie kann ich das nun wieder als Bild
anzeigen lassen?