Python 2 Exe ... ne Neuauflage?

Du hast eine Idee für ein Projekt?
Cynob
User
Beiträge: 16
Registriert: Montag 11. Dezember 2017, 19:41

Ok ob ich jetzt aus Befehls Argumenten oder über ne GUI die Benötigten Infos aquiriere spielt fürs erstellen jetzt nicht so die wichtige Rolle.
Aber wenn du es sagst - spart das schreiben der GUI :)
Benutzeravatar
sparrow
User
Beiträge: 4548
Registriert: Freitag 17. April 2009, 10:28

Mit auto-py-to-exe gibt es eine GUI für pyinstaller. Falls es ein paar Orientierungspunkte braucht.
Benutzeravatar
Kebap
User
Beiträge: 777
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

> Ich hab ein kleines Schaf programmiert

Super, wo kann ich das beziehen? Ich mochte das schon damals. :mrgreen:
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
Cynob
User
Beiträge: 16
Registriert: Montag 11. Dezember 2017, 19:41

Das kommt bald bei itch.io raus... bin grade noch am erstellen einer websit/landing page zum promoten.
Und ja es ist wirklich putzig. Fällt von oben runter, wenns aufschlägt streckts die Zunge raus. Ab und zu kommts mit nem Fallschirm runtergesegelt ( kann man in den Optionen wahlweise deaktivieren).
Dann frissts, läuft, rennt, schläft und steht dumm rum. Irgendwann läufts von der Taskleiste aus aus dem Bildschirm raus und kommt dann wieder von oben.
Cynob
User
Beiträge: 16
Registriert: Montag 11. Dezember 2017, 19:41

Hey,
hier mal n Link zu nem Video das man sich mal nen Eindruck verschaffen kann:
https://youtu.be/slKVnfWM8iU
Cynob
User
Beiträge: 16
Registriert: Montag 11. Dezember 2017, 19:41

So ich begeh jetzt mal Leichenfledderei und grabe diesen Thread wieder mal aus.

Es ist viel Zeit vergangen und ich habs zwischenzeitlich verdrängt und an anderen Projekten rumgebastelt.
Lange Rede kurzer Unsinn... mich hats vor ein paar Tagen gepackt und ich hab mich wieder an den Bastelspass gemacht.

Einen Arbeitsnamen hats auch schon:
CyPoPy (Cynobs Portable Python)
- ist jetzt nicht gut aber mal ein Anfang.

So ich schreib das jetzt hier um meinen eigenen Fortschritt ein wenig zu dokumentieren um nicht selbst durcheinander zu kommen.

Das erst große Problem ist das man dafür das Microsoft Visual Studio oder diese Build Tools benötigt. (Also das MinGW hab ich bisher nicht getestet)
Ist das aber mit den C++ Erweiterungen installiert kann der Spass los gehn.

Das CyPoPy ist genauso aufgebaut wie die selbstlaufenden Compilations welche es selbst erzeugt will ich nur mal angemerkt haben :roll:

Also ich geh einfach mal durch wie das Abläuft und noch laufen soll. Im Augenblick sind es noch zig kleine Programme und Dateifetzen welche noch nicht das fertige Produkt darstellen.

Also erstes wählt man sich über ne GUI seine gewünschte Python Version aus. Ich arbeite im Augenblick nur mit der 3.13.7 und hab noch keine andere getestet.
Davon werden dann die Quellen runtergeladen. Diese wird dann erstmal automatisch mit allen Einstellungen aktiv kompilliert und pip hinzugefügt. Dazu noch die Dateien aus dem Lib Ordner und nicht benötigtes wird rausgelöscht und ein ziemlich hart modifiziertes pigar sammt Abhängigkeiten installiert.

Man kann das Python mit einfachen Compilereinstellungen ja runterbrechen auf ca 12MB. Dann gibts aber die ein oder anderen Probleme. Wenn man ssl draussen lässt geht pip nicht mehr. Wenn man sqlite3 weglässt will tkinter nicht mehr laufen und weitere Spirenzchen.
Also je nach Ausbaustufe des Scripts was man später laufen lassen will kommt man auf irgendwas zwischen 12 und 23MB für den Interpreter.

Im zweiten Schritt wählen wir unseren Ordner aus in dem das oder die Scripte mit unserem erstellten Python Programm was wir packen wollen enthalten sind.

Alle .py Dateien in dem Ordner werden dann durch das modifizierte pigar gejagt um somit die Bezeichnungen der Imports/ Bibliotheken herauszufinden.
Zum Beispiel importiert man opencv mit "import cv2" aber das Installationspaket heißt "opencv-python".
Das Script erzeugt mit online Abfragen von pypi.org eine reqirements.txt wo alle benötigten Bibliotheken gelistet sind. Wenn unklar ist welche Lib importiert werden soll, wird ein Abfragefenster angezeigt wo man das gewünschte auswählen kann. Die Librarys für genau die Python Version die man ausgewählt hat lädt man in einen Ordner runter.

Jetzt kann man nochmal die minimal Version von python nachbauen und die zuvor geladenen Libs in diese einfügen/installieren.
So sollte man auf ein möglichst kleines Grundsystem kommen.
Nun hat man einen Ordner der Python heißt und das Grundsystem inne hat.
Damit das läuft klatschen wir daneben einen anderen Ordner. Ich hab ihn pgmdata genannt. Dort liegen einige Batch und Pythonscripte welche unter anderem auch die Umgebung für Python bereitstellen. Also das beim starten der Instanz auch die nötigen Pfade in $PATH eingetragen werden usw. Das bleibt auch nur so lange aktiv wie die Instanz. Also auf dem Rechner wird nichts verändert.

Dort werden auch unsere zuvor ausgewählten Dateien bzw den Ordnerinhalt unseres Pythonscripts hinkopiert.
Danach kommt die Abfrage welche Scriptdatei unsere "__main__" beinhaltet. Aus der Info und ggf. nem .png als icon kann man sich dann ne .exe erstellen lassen welche das Programm dann startet.

Wenn das jetzt erledigt ist hat man folgende Ordnerstruktur:

Ordner
|
-- /pgmdata
-- /python
start.exe


Damit sollte sich schon etwas anfangen lassen.

Als nächstes bin ich am überlegen wie man daraus am besten eineOnefile daraus macht. Also das Prinzip ist ja immer das man die Dateien irgendwo zusammenhängt. Eine zip ans Ende der Datei hängen und nach dem Magic Pattern suchen macht ja py2exe soweit ich weiß.
Das direkte entpacken aus einer exe heraus und am besten danach noch was ausführen mag aber kein Virenscanner so gern. Da bin ich noch am überlegen und am testen wie das am besten gehen kann.

Also wenns was neues gibt oder ich auf Github was veröffentlicht hab meld ich mich wieder.
Ideen oder Vorschläge > immer her damit!

Grüße Cynob
Antworten