Seite 1 von 1
Frozen binary / Pyinstaller / Datengröße
Verfasst: Mittwoch 11. Oktober 2017, 05:41
von Schwarzer Wolf
Ich Grüße Euch
Ich habe mal eine allgemeine Frage zu 'pyinstaller':
Mein relativ kleines Programm ist als 'Frozen binary' ca. 500 MB groß trotz 'upx-ucl' unter Debian. Mir ist klar, dass 'pandas' etwas Platz braucht, aber von ca 40 MB (ohne 'pandas' und 'upx-ucl') auf das ca. 10-Fache ist doch etwas ärgerlich. Gibt es irgendeine Möglichkeit, das irgendwie kleiner zu bekommen (außer die ganze Sache webbasiert in Django aufzuziehen).
Wünsche Euch einen schönen Tag
Re: Frozen binary / Pyinstaller / Datengröße
Verfasst: Mittwoch 11. Oktober 2017, 08:06
von Sirius3
@Schwarzer Wolf: Du mußt Dir halt anschauen, was wirklich alles importiert wird. pandas hat ja einige Abhängigkeiten. upx-ucl bringt so gut wie gar nichts, weil das nur binäre Executables packt, also bei pyinstaller den Bootstrap-Loader, der dafür sorgt, dass das eigentlich Python entpackt wird.
Re: Frozen binary / Pyinstaller / Datengröße
Verfasst: Mittwoch 11. Oktober 2017, 09:07
von Schwarzer Wolf
Sirius3 hat geschrieben:@Schwarzer Wolf: Du mußt Dir halt anschauen, was wirklich alles importiert wird. pandas hat ja einige Abhängigkeiten.
Kann ich das kleiner hinkriegen indem ich anstatt 'import pandas as pd' ein 'from pandas import x' mache? Oder muss ich mir eher die pyinstaller Logs ansehen? Er hat z. B. sehr viel von 'scipy' mit reingenommen.
Re: Frozen binary / Pyinstaller / Datengröße
Verfasst: Mittwoch 11. Oktober 2017, 09:13
von kbr
@Schwarzer Wolf: es genügt nicht die Größe von Pandas alleine zu betrachten. Pandas installiert Abhängigkeiten von fast 500 MB. Das kriegst Du also nicht kleiner, solange Du Pandas mitliefern willst.
Re: Frozen binary / Pyinstaller / Datengröße
Verfasst: Mittwoch 11. Oktober 2017, 09:58
von Sirius3
@Schwarzer Wolf: Das bringt gar nichts, weil Pakete entweder ganz oder gar nicht mitgenommen werden.
Bei mir sind die drei größten Pakete:
[codebox=text file=Unbenannt.txt]
99056kb pandas
76232kb numpy
34312kb matplotlib
2676kb pytz
[/code]
da ist also scipy gar nicht dabei und das sind insgesamt schon 250Mb.
Re: Frozen binary / Pyinstaller / Datengröße
Verfasst: Mittwoch 11. Oktober 2017, 11:08
von Schwarzer Wolf
@all
Danke (wie immer) für die schnellen antworten. Dann werde ich es nur als Sourcecode hochladen auf github, und eventuell später entweder auf Django ausweichen, bzw. wenn ich mit Mark Lutz in schätungsweise vielen Monaten fertig bin, so versuchen zu programmieren, dass ich das ohne Pandas etc. schaffe.

Re: Frozen binary / Pyinstaller / Datengröße
Verfasst: Mittwoch 11. Oktober 2017, 12:18
von Sirius3
@Schwarzer Wolf: sind Dir 200Mb zu viel Speicherplatzverschwendung, oder was ist Dein eigentliches Problem damit?
Re: Frozen binary / Pyinstaller / Datengröße
Verfasst: Mittwoch 11. Oktober 2017, 12:53
von snafu
Vielleicht ist
PyInstaller einfach die falsche Lösung für dich. Du könntest die Abhängigkeiten auch einfach im Rahmen einer Installationsroutine definieren und dann bei Bedarf mit
pip die benötigten Pakete nachinstallieren. Das geht übrigens auch ohne Internet, sofern du die Abhängigkeiten als Wheel-Dateien (
*.whl) mitlieferst.
pandas und viele weitere vorgefertigte Windows-Binaries findest du übrigens
hier.
Re: Frozen binary / Pyinstaller / Datengröße
Verfasst: Mittwoch 11. Oktober 2017, 13:14
von __deets__
@snafu wo ist denn der Vorteil bei diesem Vorgehen? Alles was man sich einhandelt ist eine haendisch gepflegte Installation statt einer einfach zu nutzenden Variante (sowohl fuer User als auch die Entwickler).
Es werden so jedenfalls weder Netzwerkverkehr noch Plattenplatz gespart.
Re: Frozen binary / Pyinstaller / Datengröße
Verfasst: Freitag 13. Oktober 2017, 14:34
von Schwarzer Wolf
Sirius3 hat geschrieben:@Schwarzer Wolf: sind Dir 200Mb zu viel Speicherplatzverschwendung, oder was ist Dein eigentliches Problem damit?
Keine Platzverschwendung. Ich finde nur, dass 400 für das kleine Programm viel zu viel ist. Ich werde mal sehen, wie ich das auf 200 kriege. Ich weiß auch nicht, warum er z.b. scipy mit drin hat. Ich importiere das nicht.
Re: Frozen binary / Pyinstaller / Datengröße
Verfasst: Freitag 13. Oktober 2017, 14:42
von __deets__
Du hast das immer noch nicht begriffen. *Du* musst scipy nicht importieren. Pandas tut das aber ggf. Wenn du da jetzt also wahllos Sachen rauskuerzt, kann es sein, dass du zur Laufzeit krachend abstuerzt. Da musst du dir schon sehr sicher sein, dass die von dir genutzen Pandas-Teile das nicht brauchen, und das du da auch nicht wenigstens in Form von importen drueber stolperst.
Re: Frozen binary / Pyinstaller / Datengröße
Verfasst: Freitag 13. Oktober 2017, 16:05
von Schwarzer Wolf
__deets__ hat geschrieben:Du hast das immer noch nicht begriffen. *Du* musst scipy nicht importieren. Pandas tut das aber ggf. Wenn du da jetzt also wahllos Sachen rauskuerzt, kann es sein, dass du zur Laufzeit krachend abstuerzt. Da musst du dir schon sehr sicher sein, dass die von dir genutzen Pandas-Teile das nicht brauchen, und das du da auch nicht wenigstens in Form von importen drueber stolperst.
Das dachte ich mir fast schon. Ich war nur bezüglich des Kommentars von Sirius3 verwundert. Dann hat sich das Thema erst mal geklärt. Ich werd wie gesagt einfach nur die Source hochladen fürs Erste.

Re: Frozen binary / Pyinstaller / Datengröße
Verfasst: Samstag 14. Oktober 2017, 06:36
von Schwarzer Wolf
Also ich habe es nun auch auf ca. 200 MB bekommen, indem ich einfach ''pyinstaller -F' benutzt habe. Ich verstehe aber nun nicht, wieso er im 'one file' Modus ca. 50 % kleiner ist, als im 'normalen' Modus. Weiß jemand was darüber?
Ich danke allen für den Zeitaufwand, hab wieder etwas dazugelernt.
