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
Frozen binary / Pyinstaller / Datengröße
- Schwarzer Wolf
- User
- Beiträge: 56
- Registriert: Donnerstag 5. Januar 2017, 05:24
Wer in der Wildnis lebt, muss zum Wolf werden, oder als Schaf sterben.
(Syrisches Sprichwort)
(Syrisches Sprichwort)
@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.
- Schwarzer Wolf
- User
- Beiträge: 56
- Registriert: Donnerstag 5. Januar 2017, 05:24
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.Sirius3 hat geschrieben:@Schwarzer Wolf: Du mußt Dir halt anschauen, was wirklich alles importiert wird. pandas hat ja einige Abhängigkeiten.
Wer in der Wildnis lebt, muss zum Wolf werden, oder als Schaf sterben.
(Syrisches Sprichwort)
(Syrisches Sprichwort)
@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.
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.
- Schwarzer Wolf
- User
- Beiträge: 56
- Registriert: Donnerstag 5. Januar 2017, 05:24
@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.
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.
Wer in der Wildnis lebt, muss zum Wolf werden, oder als Schaf sterben.
(Syrisches Sprichwort)
(Syrisches Sprichwort)
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.
@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.
Es werden so jedenfalls weder Netzwerkverkehr noch Plattenplatz gespart.
- Schwarzer Wolf
- User
- Beiträge: 56
- Registriert: Donnerstag 5. Januar 2017, 05:24
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.Sirius3 hat geschrieben:@Schwarzer Wolf: sind Dir 200Mb zu viel Speicherplatzverschwendung, oder was ist Dein eigentliches Problem damit?
Wer in der Wildnis lebt, muss zum Wolf werden, oder als Schaf sterben.
(Syrisches Sprichwort)
(Syrisches Sprichwort)
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.
- Schwarzer Wolf
- User
- Beiträge: 56
- Registriert: Donnerstag 5. Januar 2017, 05:24
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.__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.
Wer in der Wildnis lebt, muss zum Wolf werden, oder als Schaf sterben.
(Syrisches Sprichwort)
(Syrisches Sprichwort)
- Schwarzer Wolf
- User
- Beiträge: 56
- Registriert: Donnerstag 5. Januar 2017, 05:24
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.
Ich danke allen für den Zeitaufwand, hab wieder etwas dazugelernt.
Wer in der Wildnis lebt, muss zum Wolf werden, oder als Schaf sterben.
(Syrisches Sprichwort)
(Syrisches Sprichwort)