Phyton Weitergabe als *.exe, sehr groß

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
tomPyhton
User
Beiträge: 11
Registriert: Donnerstag 23. Mai 2019, 17:19

Mittwoch 16. September 2020, 07:50

Habe ein kleines Tool geschrieben, welches mir einige Informationen aus Windows ausliest. Soweit auch klappt dies gut.

Dies möchte ich nun gern weitergeben, damit es auch andere Kollegen in meinem Unternehmen nutzen können. Allerdings ist auf den System wo es genutzt werden soll, kein Python installiert.
Daher hab ich das ganze als *.exe mit PyInstaller verpackt. Dies ist nun allerdings größer als 40 MB. Damit könnte ich mich gerade noch abfinden, obwohl es schon arg groß ist.

Doch was passiert bei Programmen welche komplexer sind? Da wird die *.exe dann 400 MB und größer? Gibt es keinen Weg damit es am Ende kleiner wird zum weitergeben.

Noch was, derzeit laufen die Programme hauptsächlich unter Windows, allerdings hab ich auch ein paar Freunde welche einen Mac haben und einiger dieser Tool gebrauchen können.
Benutzeravatar
sparrow
User
Beiträge: 2131
Registriert: Freitag 17. April 2009, 10:28

Mittwoch 16. September 2020, 08:08

Python ist eine interpretierte Sprache. Das heißt, du brauchst einen Interpreter. Entweder müssen deine Kollegen einen entsprechenden Interpreter installieren, oder du lieferst ihn mit. Das ist das, was Pyinstaller tut: Es nimmt den Python-Interpreter aus deinem Environment und liefert die mit. Deshalb ist das Programm auch so groß, eben weil der Interpreter darin steckt.

Unter MacOS sollte Python installiert sein. Wenn nicht solltest du deinen Kumpels ans Herz legen eben dies zu tun.
Sirius3
User
Beiträge: 12747
Registriert: Sonntag 21. Oktober 2012, 17:20

Mittwoch 16. September 2020, 08:14

@tomPyhton: Du mußt schauen, welche Bibliotheken Du wirklich brauchst, und welche PyInstaller denkt, dass er braucht. Je nachdem, was Dein Programm wirklich benutzt, können da leicht auch ein paar mehr Megabytes zusammenkommen.
Benutzeravatar
DeaD_EyE
User
Beiträge: 476
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Mittwoch 16. September 2020, 10:20

Heutzutage ist das nicht mehr ganz so wichtig, dass Programme klein sind.

Viele Anwendungen, die ich gesehen habe, nutzen einen Chrome + Electron + JavaScript in einer Runtime zusammengepackt.
Die sind auch recht groß. Irgendwie fragt keiner danach, wieso diese Dateien so groß sind.
Alles, was irgendwie Klicki-Bunti ist, darf bis ~ 100 MiB groß sein.

Wenn dein Tool aber z.B. nur in der Kommandozeile arbeitet, wird der Nutzer sich definitiv über die Größe beschweren.
Bei GUI-Applikationen weiß man vorher schon, dass diese größer sind und das ist auch allgemein von dem Nutzer akzeptiert.

PS: Auf installierte Runtimes kann und darf man sich nicht verlassen. Selbst unter Linux ist das problematisch, wenn man sehr neue Sprach-Features nutzt wie z.B. f-strings.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Benutzeravatar
__blackjack__
User
Beiträge: 6810
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Mittwoch 16. September 2020, 10:33

f-Strings und neu: Python 3.6 gibt es seit 2016, das letzte Bugfix-Release (im Sinne von „da kommen keine mehr, auch wenn Fehler entdeckt werden“) war 2018 und Sicherheits-Updates gibt es dafür noch bis inklusive nächstes Jahr.

Man kann sich bei älteren LTS-Linuxdistributionen also noch nicht auf f-Strings verlassen, aber das Ende dieser Zeit ist absehbar.
long long ago; /* in a galaxy far far away */
tomPyhton
User
Beiträge: 11
Registriert: Donnerstag 23. Mai 2019, 17:19

Mittwoch 16. September 2020, 10:49

Rein Theoretisch ist es machbar ein kleines Tool zu schreiben, welches folgende Infos aus einem Windows System ausliest:
Seriennummer, Lizenzcode, TeamViewerID und am Ende als *.txt speichert.

Das ganze dann als *.exe verpacken und auf einem Windows System ausführen. Meint ihr, da kommt man mit 3-4 MB hin?
Benutzeravatar
sparrow
User
Beiträge: 2131
Registriert: Freitag 17. April 2009, 10:28

Mittwoch 16. September 2020, 11:00

Hast du mal geschaut, wie groß der Interpreter ist?
tomPyhton
User
Beiträge: 11
Registriert: Donnerstag 23. Mai 2019, 17:19

Mittwoch 16. September 2020, 11:05

Wo soll ich da schauen? Verstehe ehrlich gesagt nicht wonach ich genau schauen soll?
Benutzeravatar
sparrow
User
Beiträge: 2131
Registriert: Freitag 17. April 2009, 10:28

Mittwoch 16. September 2020, 11:08

Na, schon alleine die pythonxx.dll hat fast 4 MB.
tomPyhton
User
Beiträge: 11
Registriert: Donnerstag 23. Mai 2019, 17:19

Mittwoch 16. September 2020, 11:26

Verstanden, also ist es da schon mal nicht möglich dies so klein zu bekommen.
__deets__
User
Beiträge: 8544
Registriert: Mittwoch 14. Oktober 2015, 14:29

Mittwoch 16. September 2020, 12:39

Du kannst auf C/C++/Rust bauen, die liefern deutlich kompaktere Executables. Zum höheren entwicklungsaufwand.
tomPyhton
User
Beiträge: 11
Registriert: Donnerstag 23. Mai 2019, 17:19

Mittwoch 16. September 2020, 13:43

Dafür mus ich dann ja aber erst C/C++ erlernen.
__deets__
User
Beiträge: 8544
Registriert: Mittwoch 14. Oktober 2015, 14:29

Mittwoch 16. September 2020, 13:58

Joa. Wenn dein Problem kein Nagel ist, musst du den Hammer weglegen & lernen, den Schraubenzieher zu benutzen. So ist’s halt.
tomPyhton
User
Beiträge: 11
Registriert: Donnerstag 23. Mai 2019, 17:19

Donnerstag 17. September 2020, 14:13

Eine Frage zu der ganzen Thematik hätte ich noch.
Auf welcher Version basieren die UI bei Python? Bei Delphi weiß ich, sie setzen auf Windows Controls (WinAPI) und sind daher schon in Windows enthalten. Und somit kommt das Programm in Delphi auch kleiner.
Gibt es dies vlt. für Python auch und ich habe nur durch den Designer von QT solche große EXE erhalten. Wäre bei der Verwendung einer anderen GUI Plattform die EXE am Schluss kleiner?
Sirius3
User
Beiträge: 12747
Registriert: Sonntag 21. Oktober 2012, 17:20

Donnerstag 17. September 2020, 14:24

@tomPyhton: jetzt kommst Du endlich mit der Sprache raus, was ich schon ganz zu Anfang gefragt hatte. Ja PyQT braucht etliche 100MB. tkinter ist kleiner und kommt schon mit Python mit.
Antworten