Seite 1 von 1

Phyton Weitergabe als *.exe, sehr groß

Verfasst: Mittwoch 16. September 2020, 07:50
von tomPyhton
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.

Re: Phyton Weitergabe als *.exe, sehr groß

Verfasst: Mittwoch 16. September 2020, 08:08
von sparrow
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.

Re: Phyton Weitergabe als *.exe, sehr groß

Verfasst: Mittwoch 16. September 2020, 08:14
von Sirius3
@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.

Re: Phyton Weitergabe als *.exe, sehr groß

Verfasst: Mittwoch 16. September 2020, 10:20
von DeaD_EyE
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.

Re: Phyton Weitergabe als *.exe, sehr groß

Verfasst: Mittwoch 16. September 2020, 10:33
von __blackjack__
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.

Re: Phyton Weitergabe als *.exe, sehr groß

Verfasst: Mittwoch 16. September 2020, 10:49
von tomPyhton
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?

Re: Phyton Weitergabe als *.exe, sehr groß

Verfasst: Mittwoch 16. September 2020, 11:00
von sparrow
Hast du mal geschaut, wie groß der Interpreter ist?

Re: Phyton Weitergabe als *.exe, sehr groß

Verfasst: Mittwoch 16. September 2020, 11:05
von tomPyhton
Wo soll ich da schauen? Verstehe ehrlich gesagt nicht wonach ich genau schauen soll?

Re: Phyton Weitergabe als *.exe, sehr groß

Verfasst: Mittwoch 16. September 2020, 11:08
von sparrow
Na, schon alleine die pythonxx.dll hat fast 4 MB.

Re: Phyton Weitergabe als *.exe, sehr groß

Verfasst: Mittwoch 16. September 2020, 11:26
von tomPyhton
Verstanden, also ist es da schon mal nicht möglich dies so klein zu bekommen.

Re: Phyton Weitergabe als *.exe, sehr groß

Verfasst: Mittwoch 16. September 2020, 12:39
von __deets__
Du kannst auf C/C++/Rust bauen, die liefern deutlich kompaktere Executables. Zum höheren entwicklungsaufwand.

Re: Phyton Weitergabe als *.exe, sehr groß

Verfasst: Mittwoch 16. September 2020, 13:43
von tomPyhton
Dafür mus ich dann ja aber erst C/C++ erlernen.

Re: Phyton Weitergabe als *.exe, sehr groß

Verfasst: Mittwoch 16. September 2020, 13:58
von __deets__
Joa. Wenn dein Problem kein Nagel ist, musst du den Hammer weglegen & lernen, den Schraubenzieher zu benutzen. So ist’s halt.

Re: Phyton Weitergabe als *.exe, sehr groß

Verfasst: Donnerstag 17. September 2020, 14:13
von tomPyhton
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?

Re: Phyton Weitergabe als *.exe, sehr groß

Verfasst: Donnerstag 17. September 2020, 14:24
von Sirius3
@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.

Re: Phyton Weitergabe als *.exe, sehr groß

Verfasst: Donnerstag 17. September 2020, 15:27
von tomPyhton
Ok mit TKInter ist das ganze jetzt auf einmal nur noch 8 MB groß. Jetzt ist allerdings noch das Problem das die *.exe durch das verlinken eine Startverzögerung hat. Gibt es Mittel und Wege wie man dies umgehen kann?

Oder anders gefragt, wie verbreitet ihr eine Python Datei, sodass sie überall genutzt werden kann, ohne Python installiert zu haben?

Re: Phyton Weitergabe als *.exe, sehr groß

Verfasst: Donnerstag 17. September 2020, 15:31
von sparrow
Welches verlinken?
Was du da umher trägst in ein selbstentpackendes Archiv. Wenn du die Datei ausführst, dann wird zuerst einmal das Archiv entpackt. In dem Archiv befinden sich dein Script, der Interpreter, benötigte Module, benötigte Bibliotheken. Verlinkt wird nichts, weil - wie ich schon einmal schrieb - Python eine interpretierte Sprache. Da wird nichts verlinkt.

Wenn auf dem Zielsystem kein Python da ist, Pyinstaller.
Aber dafür ist Python halt nicht gedacht.