Python 2 Exe ... ne Neuauflage?

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

Hallo,
ich programmiere schon mehrere Jahre und naja - ein Projekt wirft so nebenbei zur Zeit einen niedlichen (zusammengestückelten) Script zu Exe Generator ab.
Das original Py2exe ist ja irgendwann mal vor 12 Jahren stehen geblieben. CX-freeze baut ja nur alles zusammen und keine "One-File"
Bevor ich mir jetzt die Arbeit mache und mich mit GUI und Co verkünstel - ist so etwas heutzutage überhaupt noch gefragt?
Viele Grüße
Cynob
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Es gibt noch pyinstaller. Keine Ahnung wie sich das zu deinem Tool verhaelt. Wenn man nach den Fragen hier geht: das hat durchaus Potential, es werden oft Fragen in die Richtung gestellt.
Cynob
User
Beiträge: 15
Registriert: Montag 11. Dezember 2017, 19:41

Ja das mein ich ja .... gibt viele Fische im Teich.
Nur kann meins halt out of the Box ausführen - ohne was installieren zu müssen.
Bin da halt am überlegen ob es sich lohnt den Aufwand da reinzustecken oder ob ich das nur für mich mach.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Na was heißt denn lohnen? Geld ist eher unwahrscheinlich. Ein beliebtes Projekt zu haben? Schon eher. Der Markt ist da.
Cynob
User
Beiträge: 15
Registriert: Montag 11. Dezember 2017, 19:41

Na dann warte ich mal ab ob es hier noch ein paar upvotes für das Projekt gibt :)
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich glaube nicht, dass die kommen werden. Das hier sind ja nun weit weniger als deine potentiellen User. Ich kann dir als "regular" nur sagen, dass pyinstaller Fragen oft kommen, es also einen Bedarf an dieser Art von Anwendungs-Buendlung gibt. Besonders unter Windows natuerlich. Die kommen aber nicht auf diesen Thread und geben ein 👍

Aber wenn du das proper aufsetzt, und zB bei Fragen danach hier dein Tool ins Spiel bringst, dann waere das ein Weg.
Benutzeravatar
DeaD_EyE
User
Beiträge: 1021
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Bevor ich mir jetzt die Arbeit mache und mich mit GUI und Co verkünstel - ist so etwas heutzutage überhaupt noch gefragt?
Entwickler, die ihre Anwendung verteilen möchten und die Anwendung auch unter Windows funktionieren soll, ist es quasi Pflicht daraus eine ausführbare Datei zu erstellen.
Versuch mal einem 0815-Anwender zu erklären, wie er unter Windows zuerst Python und dann die Abhängigkeiten installieren soll, mit Beachtung der Art der Installation (Systemweit oder User-Installation oder aus dem Windows App Store).
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Benutzeravatar
peterpy
User
Beiträge: 188
Registriert: Donnerstag 7. März 2013, 11:35

Vielleicht reicht dir portable Python?
https://sourceforge.net/projects/portable-python/
Gruss Peter
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

@DeaE_Eye: Der gelernte Weg wäre eher etwas über einen Installer zu installieren. Und da kann man die Python-Umgebung relativ problemlos mitgeben. Viele Projekte und Anwendungen machen das auch so.

Ich habe für kleine Tools aber auch schon PyInstaller als one-file-Exe-builder benutzt. Es ist halt ein Kompromiss mit Vor- und Nachteilen.
Benutzeravatar
grubenfox
User
Beiträge: 432
Registriert: Freitag 2. Dezember 2022, 15:49

sparrow hat geschrieben: Freitag 6. Januar 2023, 15:25 @DeaE_Eye: Der gelernte Weg wäre eher etwas über einen Installer zu installieren. Und da kann man die Python-Umgebung relativ problemlos mitgeben. Viele Projekte und Anwendungen machen das auch so.
und was nutzt man da heute so?
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

@grubenfox: Soweit ich weiß, gibt es verschiedene Tools die das anbieten. Recht bekannt war in der Vergangenheit immer inno setup. Das ist aber nicht auf Python bezogen sodern damit kann man beliebige Software in packen.
Wobei das in Zeiten der selbstupdatenden Elecrton-basierten Programme auch schon wieder alt sein könnte.
Fire Spike
User
Beiträge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

Ein weiteres sehr gutes Tool, um Python in eine exe zu konvertieren, wäre Nuitka.
Ein guter Vorteil von Nuitka ist, dass Nuitka den Code optimiert und dann in C transpiliert. Somit bekommst du auch noch mehr Speed.
Benutzeravatar
grubenfox
User
Beiträge: 432
Registriert: Freitag 2. Dezember 2022, 15:49

sparrow hat geschrieben: Freitag 6. Januar 2023, 17:24 @grubenfox: Soweit ich weiß, gibt es verschiedene Tools die das anbieten. Recht bekannt war in der Vergangenheit immer inno setup. Das ist aber nicht auf Python bezogen sodern damit kann man beliebige Software in packen.
Wobei das in Zeiten der selbstupdatenden Elecrton-basierten Programme auch schon wieder alt sein könnte.
Ja, Inno Setup hatte ich möglicherweise vor rund 25 Jahren benutzt um ein in Delphi geschriebenes Windows-Programm (eine exe-Datei und ein paar dazugehörige Dateien) verteilen zu können.
Und vor 10-15 Jahren war da ein Python-Programm für Windows... das wurde zuerst durch py2exe gejagt und damit in eine exe-Datei und ein paar dazugehörige Dateien (DLLs) gewandelt. Dann... aber möglicherweise hatte ich damals keine Installationsdatei erzeugt, sondern es für Copy&Paste-Installation ausgelegt. Neudeutsch wohl "portable Installation"... einfach den Ordner mit der exe und den DLLs auf den Zielrechner kopieren und dort Programm einfach starten.

So ein selbstupdatendes Electron-basiertes Programm habe ich mittlerweile auch seit einigen Monaten auf allen Rechnern laufen. Die Windows-exe davon soll ein "Nullsoft Installer self-extracting archive" sein. Laut Wikipedia ist der Nullsoft-Installer ähnlich alt wie Inno Setup. Also für die erste initiale Installation scheinen diese Programme immer noch aktuell zu sein.

Aber interessanter Punkt, vielleicht für eine eigene Diskussion: selbstupdatendes Python-Programm... machbar oder nicht? Wenn das Programm keine einzelne *.exe-Datei ist, sondern schön in Form von einzelnen Modulen(Dateien) vorliegt einfach die zu updatenden *.pyc-Dateien austauschen?
Fire Spike hat geschrieben: Freitag 6. Januar 2023, 19:44 Ein weiteres sehr gutes Tool, um Python in eine exe zu konvertieren, wäre Nuitka.
Ein guter Vorteil von Nuitka ist, dass Nuitka den Code optimiert und dann in C transpiliert. Somit bekommst du auch noch mehr Speed.
Ahhhh, noch nie von gehört! Liest sich sehr interessant! 8) Dank dafür...
Cynob
User
Beiträge: 15
Registriert: Montag 11. Dezember 2017, 19:41

Interessant, die vielen Beiträge.
Gibt ja doch schon einige Installer auf dem Markt. Der Grund warum die sich so lange halten dürfte sein das sich an der Sache an sich über die Jahre ja nicht wirklich was geändert hat.
Was ich mir zusammengebastelt hab funktioniert mit IExpress (um mal die Liste hier zu vervollständigen). Das Ding ist sogar bei Windows dabei.

Zum Thema selbstupdater - das dürfte eigentlich ja nicht weiter schwer sein. Auch aus ner einzelnen exe heraus. Wenn die Dateien so vorliegen gehts noch einfacher.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das mit dem selbst-updater unterschätzt du. Weil Windows eine EXE, die ausgeführt wird, blockiert, muss man da einen ganzen Tanz aufführen: Update runterladen, eine *zweite* Kopier-EXE irgendwohin platzieren, die starten mit dem Ziel, die eigentliche EXE nach deren Ende zu überschreiben.
Cynob
User
Beiträge: 15
Registriert: Montag 11. Dezember 2017, 19:41

Jain.
bei mir liegt das ganze Pythongeraffel und Software in nem Archiv und wird beim starten ins tmp Verzeichnis entpackt und ausgeführt.
Jetzt könnte man einfach irgendwo das neue Archiv speichern und dieses anstelle des mitgebrachten beim Start ausführen. Also die Exe dient nur noch als Starter.
Wenn man es über Scripte lösen möchte benötigt man so drei/ vier Schleifen bis man alt zu neu umbenannt hat.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Na das ist dann ja implizit das gleiche vorgehen - wenn du eh ein eigenes Verzeichnis hast aus dem alles läuft, kann man die ursprüngliche Exe natürlich überschreiben.
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

Das ist übrigens auch das Vorgehen von pyinstaller bei der Erstellung einer 1-file-exe.
Wobei hier ein ziemlich gut durchdahte Methode zum Tragen kommt, nur das in das Archiv zu packen, was auch auch wirklich benötigt wird, um die Datei möglichst klein zu halten.

Pyinstaller hat auch die Möglichkeit einer startenden exe und der Rest liegt eben nicht in der exe selbst. Das hat der Vorteil, dass eben kein Archiv vorliegt, was den Austausch von einzelnen Dateien möglich macht, und es beschleunigt den Start des Programms, weil nicht irgendwelche Archive entpackt werden müssen.

Falls du also die Funktionalität von pyinstaller nachgebaut hast, ist die Frage, was dein Projekt besser macht.
Cynob
User
Beiträge: 15
Registriert: Montag 11. Dezember 2017, 19:41

Ich hol mal aus:
Ich hab ein kleines Schaf programmiert welches wie damals`95 "eSheep" nachahmt ,-aber in humaner, ruhiger und mit aktueller Grafik.
Für die welche es nicht kennen: Ein kleines Schaf läuft über die Fenster auf dem Desktop, fällt runter bis auf die Taskleiste, frisst,schläft usw.
Derweil kann man den Desktop nach wie vor bedienen.
Läuft und lief super - nur sobald es mit py2exe oder cx-freeze gepackt war ging mein "pseudo" Vollbildmodus in einen richtigen über und aus war es mitm Bedienen des Desktops.
Also musste was eigenes her.....

Nach einigem rumgefuchtel kam ich dann auf meine "Lösung" welche eine Python Minimal Installation + die benötigten extra Bibliotheken + den eigenen Code beinhaltet
Jetzt kann man das halt runterbrechen das man irgendwie über ne GUI oder so Den Programmnamen angibt. Dann wählt man noch alle Dateien aus welche mit müssen und die Python Script Datei welche initial gestartet werden soll.-Fertig.
Die bis dato noch fehlenden Importe kann man ja automatisch mit z.B. dem modulefinder ermitteln und dann hinzufügen oder via Ausschlussverfahren den Python Interpreter entschlacken.

Ein anderer Vorteil wär noch das man sich frei aussuchen kann welchen Python Interpreter man nutzen/mitgeben möchte. Oder vielleicht irgendwann die online-update Funktion welche ich grad schreib welche "in place" diese one-File exe austauscht. ( Das funktioniert übrigens auch wenn man mehrere Kopien der Datei in verschiedenen Ordnern gleichzeitig am laufen hat)

Ob das jetzt mein Projekt "besser" macht kann ich nicht sagen.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ob das besser ist als pyinstaller kann ja auch kein anderer wissen - kennt ja keiner dein Tool ;)

Statt GUI wuerde ich uebrigens erstmal stark fuer eine Kommandozeilen-Variante votieren. Die ist ueblicherweise flexibler und kann mehr anbieten, als die GUI. Wenn man da eine GUI haben *will* kann man das immer noch drueber dekorieren. Aber wenn ich solche Tools nutze, dann kommen die automatisch auch immer in irgendwelche continuous integration Setups etc. Wenn die dann nicht automatisierbar sind, sondern da wer rumklicken muss, ist es nicht nutzbar.
Antworten