Hi,
ich möchte ein Python Script in eine exe Datei umwandeln als einzelne
exe "one file", leider möchte py2exe nicht so wie ich das möchte!
die setup.py
MArio schrieb:> Wie bekomme ich py2exe dazu die exe als one-file zu generieren?
In dem du der einfachheit halber einfach PyInstaller nimmst. Da muss du
auch keien komische setup.py schreiben.
Einfach in der Konsole in den Projektordner wechseln und
1
pyinstaller --onefile mein_script.py
eingeben. Fertig.
Was includiert werden muss, merkt der PyInstaller von alleine,
so wie sich das gehört.
Unter Windows am einfachsten über pip zu installieren:
Hi,
dann komme ich mit pyinstaller zum nächsten Problem.
Ich erstelle mit tkinter eine GUI und sobald ich eine Aufforderung für
requests habe, springt das script an das Ende und bricht ab. Als nur in
der mein_script.exe. in der mein_script.py geht das ohne Probleme
MArio schrieb:> Als nur in> der mein_script.exe. in der mein_script.py geht das ohne Probleme
Ohne Code wirds schwer mit helfen...
Entweder du baust Debugausgaben ein, und versuchst nachzuvollziehen,
was schief geht, oder du müsstest mal Code posten.
Es hilft auch die exe nicht per Doppelklick zu starten, sondern aus der
Kommandozeile zu starten, dann siehst du auch den üblichen Python
Stacktrace wenn was schiefgeht.
Ein Python-Script ist was anderes als eine gebaute exe, bzw. läuft das
Script in einer ganz anderen umgebung ab.
1. Anwendung aus der Kommandozeile starten damit du den Stacktrace
siehst
2. Wenn das nicht hilft, Debugausgaben einbauen und nachvollziehen was
schief geht
3. Wenn das nicht hilft, Code posten.
Wie wäre es denn, wenn du du das try-except mal so umbaust, das du auch
siehst was nicht funktioniert hat?
Fehlermeldungen sind ja nicht zum Spaß da, die haben einen Sinn.
Ich weiß, klingt komisch, ist aber so.
1
try:
2
# hier dein Code
3
except Exception as e:
4
print("Fehler bei: " + file_import + "\n")
5
print()
6
print("Fehlermeldung der Exception ist:")
7
print(e)
Die Fehlermeldung sagt dir dann schon ganz genau, was nicht Funktioniert
hat.
MArio schrieb:> warum geht es in der> Entwicklungsumgebung problemlos aber als exe auf dem selben PC geht es> nicht.
Weil die Entwicklungsumgebung (teilweise) eine andere Umgebung für das
Programm erzeugt/bereitstellt, z.B. andere Umgebungsvariablen.
Deswegen nutze ich auch keine IDE für Python, bzw. starte das
Python-Script immer über die Kommandozeile.
Ich hatte schon Fälle wo die Python-Anwendung super lief, wenn man sie
aus Eclipse heraus startete, es aber ein krampf war, das Ding ohne
Eclipse zu nutzen. Einfach, weil Eclipse eine andere Umgebung erzeugt.
MArio schrieb:> def run(selfself):
Das soll wahrscheinlich nur
1
def run(self):
heißen.
MArio schrieb:> Das Problem bei mir ist, dass ich sehr viele Fehlermeldungen nicht> verstehe.
Okay, jeder fängt mal an. Python Fehlermeldungen sind aber, wie
Fehlermeldungen des GCC, in 99% aller Fälle sehr eindeutig.
MArio schrieb:
1
Fehlermeldung der Exception ist:
2
'module' object has no attribute 'get'
Die Fehlermeldung sagt dir:
Hey, Du möchtest da was benutzen (module), aber das Ding hat kein
Attribut (hier eine Funktion) Namens 'get', bzw. kann ich sie nicht
finden.
Da ich in deinem Code nur ein 'get' finde heißt das konkret:
Der Pythoninterpreter in der exe-Datei ist der Meinung, dass
das Modul 'requests' keine Funktion hat die 'get' heißt.
Das kann passieren, wenn du z.B. selbst eine Pythondatei hast, die
requests.py heißt und damit die falsche Datei eingebunden wird.
Das kann ein Fehler sein, den deine Entwicklungsumgebung schön
kaschiert.
Hast du mal die exe-Datei in den selben Ordner kopiert, wo das
Python-Script liegt?
Wenn du mal nach dem Fehler suchst
1
python requests: 'module' object has no attribute 'get'
Hi,
Kaj schrieb:> Hast du mal die exe-Datei in den selben Ordner kopiert, wo das> Python-Script liegt?
Ja, aber der selbe Fehler. Ich habe auch keine Datei mit den namen
requets.py in meinem Ordner.
also, was ich jetzt so alles gemacht habe...
- requests deinstaliert
- pyinstaller deinstalliert
Und dann wieder installiert. Das ganze immer über pip.
Und jetzt geht es. Frag mich nicht wieso, aber es geht.
Danke für deine Hilfe
MArio schrieb:> Und jetzt geht es. Frag mich nicht wieso, aber es geht.
Ja, kenn ich :)
MArio schrieb:> Danke für deine Hilfe
Gerne, auch wenn ich letzendlich ja gar nichts zur Lösung beigetragen
habe. :)
Kaj schrieb:> Gerne, auch wenn ich letzendlich ja gar nichts zur Lösung beigetragen> habe. :)
Naja, eigentlich schon. Du hast mich Stück für Stück in die richtige
Richtung gelenkt. Und ich habe gelernt exception besser einzusetzen.