Seite 1 von 4

Re: Python 3.5 Code in .exe Datei

Verfasst: Samstag 29. Dezember 2018, 17:24
von __blackjack__
@xXSkyWalkerXx1: Da Du den Code nicht zeigst, kann man allgemein nur sagen, das man am besten immer explizit die Kodierung angibt, und sich nicht darauf verlässt was Python da ”magisch” errät, denn das kann unter anderem davon abhängen welche Kodierung(en) das System benutzt auf dem das läuft.

Re: Python 3.5 Code in .exe Datei

Verfasst: Samstag 29. Dezember 2018, 19:57
von xXSkyWalkerXx1
Ich hoffe der folgende Code meines Programms macht für dich vllt das Problem ersichtlich:

Code: Alles auswählen

    def generate(self):
        #try:
        session = requests.Session()
        session.post(login_url,data={'username':username,'password':passwort})
        session.post(source_url,data={'page_pwd':'<secret>'})
        get_login2  = session.get(source_url)
        soup = bs(get_login2.text,"html5lib")
        find_script = soup.find_all("p")
        
        for p in find_script:
            if "xXSkyWalkerXx1 GAMEPACK EDITION" in p.text:
                script = p.text
        
        w = open(os.environ['HOME']+'/Desktop/Fortnite_SkyGamePack.txt',"w") #.gpc !
        w.write("//include_lib: "+str(username[0:3])+str(username[-2])+str(username[-1])+"_library\n") #muss nicht verstanden werden ^^
        w.write(script)
        w.close()
...denn das ist eigentlich das, was das Problem ausmacht.
Mit der Funktion "print()" wird "script" allerdings normal ausgegeben,nur nicht geschrieben.
Vielleicht mittels ".encode("utf-8")" ?

Mal auch ein riesen Dank an die aktiven Mitglieder, die hier recht schnell antworten und hilfreich sind! :)

Grüße,
xXSkyWalkerXx1

Re: Python 3.5 Code in .exe Datei

Verfasst: Samstag 29. Dezember 2018, 20:21
von __blackjack__
@xXSkyWalkerXx1: Wenn Du das UTF-8-kodiert speichern möchtest, solltest Du es auch entsprechend kodieren. Allerdings würde ich die Kodierung beim öffnen der Textdatei angeben.

Pfade setzt man mit `os.path.join()` zusammen und nicht mit ``+``.

Re: Python 3.5 Code in .exe Datei

Verfasst: Samstag 29. Dezember 2018, 21:55
von xXSkyWalkerXx1
Super, danke! Hatte bereits vorher gefunden, das man "encoding[etc.]" verwenden muss, habs auch bei "open" versucht, aber muss irgendwas falsch gemacht haben - nun funktioniert's! :)

Re: Python 3.5 Code in .exe Datei

Verfasst: Sonntag 30. Dezember 2018, 11:50
von DeaD_EyE
Ein vorweg, Py2exe habe ich noch nie verwendet. Ich verwende immer den PyInstaller.

Ich nutze zwar selten Windows, weiß aber, dass ca. seit Python 3.5 der Interpreter nicht mehr im Pfad sein muss/sollte.
Die haben den Installer überarbeitet. Wo hast du Python 3.5 für Windows eigentlich her? Ich habe gerade nach dem Installer gesucht
und musste feststellen, dass die nur noch den Source Code für diese Version vertreiben.

Du kannst jedenfalls zu Python 3.7.2 auf dem Windows-PC updaten.


Egal ob wie der Interpreter jetzt installiert wird (Systemweit in C:\Programme oder als User-Anwendung in %localappdata%\Programs\Python)
das Tool py.exe findet ihn.

Wichtig ist nur, dass bei der Installation mit angegeben wird, dass der Launcher Systemweit installiert werden soll.
Ob man Python zum Pfad hinzufügen soll oder nicht, streiten sich die Geister. Ich mache das schon lange nicht mehr.
Installiert man es als Anwender, meckern manche Module rum, dass sie nicht im Systempfad liegen.

Code: Alles auswählen

py -m pip install PyInstaller --upgrade
echo print('Hello World') > test_program.py
py -m PyInstaller -F test_program.py
dist\test_program.exe
Hier und dort knallt es mal, wenn man zu viele Module installiert hat. Enum34 wird z.B. durch irgendeine Abhängigkeit installiert, sorgt aber für Probleme beim PyInstaller, da seit 3.5 oder später enum.IntEnum iterierbar ist und bei Enum34 war das nicht der Fall.

Viel besser ist es noch, wenn du eine Virtuelle Umgebung einrichtest, in der nur die Module installiert werden, die deine Software benötigt.

Code: Alles auswählen

py -m venv env1
env1\Scripts\activate.bat
# dann steht ein (env1) im prompt
# alle Module werden dann in env1 installiert
# und nicht Global
# deine Abhängigkeiten installieren
# py -m pip install -r requirements.txt
py -m pip install PyInstaller --upgrade
echo print('Hello World') > test_program.py
py -m PyInstaller -F test_program.py
dist\test_program.exe

Re: Python 3.5 Code in .exe Datei

Verfasst: Sonntag 30. Dezember 2018, 13:26
von xXSkyWalkerXx1
Ich weiß, dass ich zu 3.7 updaten kann, aber ich habe auf meinem RasPi3 auch nur 3.5 und so kann ich wenigstens auf beiden Geräten programmieren, ohne auf dem anderen Gerät vllt was überarbeiten zu müssen, wegen möglichen Unterschieden beider Versionen.

Naja, also ich habe es gerade mit "Auto_Py_To_Exe" geschafft, nach einigen Anläufen. ^^
Aber wenn ich die Anwendung starten möchte (mittels doppel-klick auf die Anwendung) wird mir mein Programm nicht angezeigt, obwohl "Auto_Py_To_Exe" keine Warnung für mögliche Probleme oder so angab.
Woran liegt das?

Re: Python 3.5 Code in .exe Datei

Verfasst: Sonntag 30. Dezember 2018, 14:05
von Sirius3
@xXSkyWalkerXx1: wie oft soll man Dir noch sagen, dass wenn Du keine Informationen lieferst, Du keine Antwort bekommen kannst. Woher soll irgendjemand wissen, was Du gemacht hast und was dann nicht so funktioniert, wie Du Dir das vielleicht denkst? Source-Code, Einstellungen, EXE-Datei hier posten, vielleicht tut sich das ja jemand an, nach dann nach dem Fehler zu suchen.

Re: Python 3.5 Code in .exe Datei

Verfasst: Sonntag 30. Dezember 2018, 14:12
von xXSkyWalkerXx1
Ja, wollte ja auch eigentlich die Datei hier hochladen, aber hier gibt's ja keine Möglichkeit eine Datei anzuhängen.
Aber dann ist mir ja DropBox eingefallen: <link kommt gleich>

Re: Python 3.5 Code in .exe Datei

Verfasst: Sonntag 30. Dezember 2018, 14:32
von __blackjack__
@xXSkyWalkerXx1: Was passiert wenn Du die Anwendung nicht per Doppelklick startest, sondern über die Konsole? Werden da Fehlermeldungen ausgegeben?

Re: Python 3.5 Code in .exe Datei

Verfasst: Sonntag 30. Dezember 2018, 14:50
von xXSkyWalkerXx1
Also, hier erstmal der Link: https://www.dropbox.com/sh/mbwy91v4xyl1 ... xI5ca?dl=0
Hab Gefühl, dass "Py_2_Exe" manchmal Macken hat, weshalb es gerade zur Verspätung kam.

Zu deiner Frage: es öffnet dann nur erneut die Konsole, im neuen Fenster, mehr nicht, aber der zeigt auch nichts weiter in dieser.


PS. Beim Download kann es sein, dass der AntiVirus anspringt, das ist normal und angeblich bei jeder .exe Datei , erzeugt durch Py_2_Exe.

Re: Python 3.5 Code in .exe Datei

Verfasst: Sonntag 30. Dezember 2018, 17:48
von GuardDog
Hi,

wie wäre es damit: Du lädst die neuste Python-Version (oder eine deiner Wahl) herunter. Bei der Installation achtest du darauf dass "add Python 3.x to PATH" und "Disable PATH length limit" (<- Am ende der Installation) angehakt sind. Dann probier nochmal "pip install pyinstaller". Wenn pyinstaller installiert ist, gehe mit 'cd Pfad\zur\Datei' zur Datei und führe dann "pyinstaller namedesprogramms.py" aus.

Grüße

Re: Python 3.5 Code in .exe Datei

Verfasst: Sonntag 30. Dezember 2018, 18:10
von snafu
GuardDog hat geschrieben: Sonntag 30. Dezember 2018, 17:48 Dann probier nochmal "pip install pyinstaller".
Dann aber besser mit py -m pip install pyinstaller machen, damit die neue Version auch wirklich benutzt wird. Alternativ alle älteren Python-Versionen vorher runterschmeißen.

Re: Python 3.5 Code in .exe Datei

Verfasst: Montag 31. Dezember 2018, 10:28
von DeaD_EyE
xXSkyWalkerXx1 hat geschrieben: Sonntag 30. Dezember 2018, 13:26 Ich weiß, dass ich zu 3.7 updaten kann, aber ich habe auf meinem RasPi3 auch nur 3.5 und so kann ich wenigstens auf beiden Geräten programmieren, ohne auf dem anderen Gerät vllt was überarbeiten zu müssen, wegen möglichen Unterschieden beider Versionen.
  • du darfst async und await nicht mehr als Namen verwenden
  • du darfst einen Generator nicht mit StopIteration beenden, statdessen return verwenden
Viel mehr inkompatible Änderungen fallen mir momentan nicht ein. Du kannst jetzt fast überall in der stdlib Path-Objekte verwenden.
Vorher musste man den Pfad immer mit der Funktion str in Strings umwandeln, was etwas komisch im Code aussah.

Wenn du Python 3.7.2 auf dem Raspberry Pi verwenden willst, hast du verschiedene Möglichkeiten:
Wenn man selbst kompiliert kann das 30 Minuten oder länger dauern. Die Geschwindigkeit der SD-Karte ist ausschlaggebend.
So kannst du dann auch die neuste Python-Version auf deinem Raspberry Pi verwenden. Alle gängigen Bibliotheken sind kompatibel. (bis auf Tensorflow)

Re: Python 3.5 Code in .exe Datei

Verfasst: Mittwoch 2. Januar 2019, 16:21
von xXSkyWalkerXx1
Okay, also ich habe folgendes herausgefunden:
- wenn ich ein konsolenbasiertes Programm umwandel funktioniert es - .exe Datei startet Konsole, etc.
- eine UI (nicht konsolenbasiert) funktioniert widerrum nicht - es wird kein UI angezeigt (in dem Falle wurde Tkinter verwendet).

Re: Python 3.5 Code in .exe Datei

Verfasst: Mittwoch 2. Januar 2019, 16:24
von __deets__
Was passiert, wenn du die Anwendung von der Konsole aus startest? Bekommst du dann eine Fehlermeldung? Denn grundsaetzlich geht so etwas.

Re: Python 3.5 Code in .exe Datei

Verfasst: Mittwoch 2. Januar 2019, 16:55
von xXSkyWalkerXx1
Ja, vergessen mit dazu zu schreiben:
Beim Start von der Konsole aus passiert auch nichts, die Datei wird geladen - dieses Ladekreis Symbol wird angezeigt, dann verschwindet es und nichts weiter passiert.
Nirgends eine (Fehler)Meldung oder sonst was.

Re: Python 3.5 Code in .exe Datei

Verfasst: Mittwoch 2. Januar 2019, 18:01
von __blackjack__
In der Windowskonsole gestartete Programme führen zu einem Ladekreissymbol? Bekommst Du denn den Prompt zurück nachdem „nichts“ passiert?

Re: Python 3.5 Code in .exe Datei

Verfasst: Mittwoch 2. Januar 2019, 18:11
von xXSkyWalkerXx1
Hoppla, tut mir leid, war mit den Gedanken teils bei der Ausführung mittels Mausklicks, ich korrigier mich:

Start über Mausklick: Das Ladekreissymbol wird angezeigt und verschwindet kurz darauf wieder - danach passiert scheinbar nichts weiter...
Start über Konsole: Ich gebe "start [Pfad des Prog.]" in die Konsole ein, Cursor wird auf neue Zeile gesetzt, also es führt das Prog. aus, aber das UI wird trotzdem nicht angezeigt.

Ich werde mal die .py Datei erneut umwandeln lassen, aber als Konsolenbasiert und werde noch eine print - Funtkion schnell einfügen, um zu sehen, ob das wenigstens funktioniert, denn eine reine Konsolenanwendung funktioniert komischerweise.
UPDATE: In der Konsole wird der Text (selbstgewählter) zwar angezeigt, aber die Konsole selbst verschwindet nach kurzer Zeit wieder. Allerdings finde ich im Taskmanager ein Abbildname "pythonw.exe" - mein Programm vllt?

Re: Python 3.5 Code in .exe Datei

Verfasst: Mittwoch 2. Januar 2019, 22:29
von xXSkyWalkerXx1
Shit, keiner 'ne Idee? :D

Re: Python 3.5 Code in .exe Datei

Verfasst: Donnerstag 3. Januar 2019, 08:27
von Sirius3
@xXSkyWalkerXx1: Du hast irgendeine Abhängigkeit nicht mit in Deine exe gepackt. Da Du aber bisher noch nicht geschrieben hast, mit welcher Konfiguration Du das erstellt hast, kann man Dir nicht helfen. Erster Schritt ist, das Ding mit python.exe statt mit pythonw.exe zu packen und in der Konsole zu starten, dass man die Fehlermeldung sieht.