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.
Phyton Weitergabe als *.exe, sehr groß
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.
Unter MacOS sollte Python installiert sein. Wenn nicht solltest du deinen Kumpels ans Herz legen eben dies zu tun.
@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.
- DeaD_EyE
- User
- Beiträge: 1020
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
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.
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
- __blackjack__
- User
- Beiträge: 13103
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
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.
Man kann sich bei älteren LTS-Linuxdistributionen also noch nicht auf f-Strings verlassen, aber das Ende dieser Zeit ist absehbar.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
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?
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?
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?
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?
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?
Oder anders gefragt, wie verbreitet ihr eine Python Datei, sodass sie überall genutzt werden kann, ohne Python installiert zu haben?
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.
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.