StrippedPython - python windows installation kleiner

Du hast eine Idee für ein Projekt?
Antworten
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

wie klein kann man die standart python installation machen ohne module zu verlieren?
ein erster versuch meinerseits:
- docs, tools, readme, etc raus
- alles was man mit upx packen kann, mit upx packen
- Lib zippen und in site.py in sys.path eintragen, nachdem man gewaerleistet hat das os durch site.py importiert werden.

das ergebnis: 18.5 megabyte, also schonmal mehr als die haelfte kleiner

der tcl ordner ist 6.7 megabyte gross, braucht tkinter wirklich alles was da drin ist? soviel ich weis hat tcl auch eine art zipimport, aber dafuer kann ich tcl nicht gut genug...

hat nhemand weitere ideen?
Zuletzt geändert von Costi am Montag 6. Dezember 2010, 12:41, insgesamt 1-mal geändert.
cp != mv
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

ist nicht das selbe...

bei StripedPython waeren die python ordner strukturen weitgehent intakt, es waere zum beispiel moeglich neue module bei bedarf mit easy_install nachzuinstallieren...
cp != mv
BlackJack

@Costi: Ist der Name ("gestreifte(s) Python") Absicht, oder meintest Du vielleicht StrippedPython!? :-)
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

@BlackJack: oooops... - guter einwand :D
cp != mv
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

Hmm,... ich dachte ich hätte das schon mal kleiner hinbekommen. Weiß aber nicht mehr was ich alles gemacht hab (vmtl. irgendwo gekürzt)...
- alle pyc entfernt?
- Verzeichnis libs entfernt?

Mal ein Alternativvorschlag: Den größten Zugewinn kann man erzielen, wenn man nicht alle Module mitnimmt. Schön wäre es wenn man sich ein Python flexibel zusammenstellen könnte. Im Sinne von: ich brauch pickle, math, ... --> mach mir ein Python und achte dabei auf die Abhängigkeiten (z.B.: multiprocessing braucht: os, sys, weakref, array, Queue, ...).

MFG HerrHagen
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Und am Ende könnt ihr Python auf möglichst wenigen 3,5"-Disketten ausliefern oder was ist das Ziel?
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

steht im im titel, "python windows installation kleiner"

ich finde das absolut nicht sinnlos, das koennte ein ersatz fuer py2exe und co sein, mit abhaengigkeiten umzugehen waere viel einfacher...

und ich finde es macht ein sehr grossen unterschied ob man mein script mit einen 18.5 oder 40 megabyte interpreter mit deployed
cp != mv
lunar

@Costi: Darf ich einmal bescheiden anfragen, in welchem Jahrzehnt Du Dich computertechnisch so befindest? Die Zeiten, in denen ein relevanter Unterschied zwischen 18,5 oder 40 MB bestand, sind selbst bei mir daheim auf dem Dorf bereits vorbei, und da gibt es noch oberirdische Telefonleitungen, die fast doppelt so alt sind wie ich selbst.

Vom Speicherplatz müssen wir gar nicht erst reden. Bei den heutige üblichen Größen kann es sich selbst ein 100 MB großer Interpreter recht bequem machen, und sich zwischen den Gigabytes mit Musik und Filmen ganz komfortabel verstecken.

Also welches praktisch relevant Problem versuchst Du denn da jetzt zu lösen?

Es fällt mir jetzt auch reichlich schwer, einen Zusammenhang mit py2exe und/oder pyinstaller zu finden. Um Programme unter Windows vernünftig zu verteilen, muss man die Abhängigkeiten in den Griff bekommen, und nicht den Interpreter auf Minimalgröße eindampfen.
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

es geht bei der groesse nur um den psychologischen effekt beim user.

man kann statt py2exe und co zu benutzen den vollen interpreter mit deployen der das eigene programm ausfuehrt, abhaengigeiten kann man dan viel einfacher loesen: einfach was man brauch in /Lib/site-packages rueberschieben.

warum sollte man das so nicht machen?
cp != mv
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Costi hat geschrieben:es geht bei der groesse nur um den psychologischen effekt beim user.
Und was genau soll da kleiner sein? Die ausgepackte installierte Version im Dateisystem oder das Setup-Programm? IMHO ist doch nur letzteres wichtig, weil man diese Größe sieht, wenn man z.B. diese Datei über das Internet lädt. Wie groß das auf der Festplatte ist, danach kräht doch kein Hahn in Zeiten, wo die Leute ein halbes Terrabyte oder mehr in ihren Rechnern haben. Der Verschnitt bei FAT-formatierten USB-Festplatten ist da leicht größer als so manches Programm.

Wenn du also das Setup-Programm klein kriegen willst, dann scheint mir der Versuch, irgendwelche EXE-Dateien mit UPX zu packen kontraproduktiv, denn in der Regel ist die Komprimierung besser (man vergleiche .zip mit .tar.gz) wenn alles zusammen nur einmal gepackt wird. Am effektivsten bekommst du das ganze klein, indem du möglichst viele möglichst große Dateien weglässt. Schmeiß alles, was zur Software-Entwicklung dient weg (include-Dateien, Dokumentation, usw.). Schmeiß alle Module weg, die du nicht brauchst - insbesondere, wenn da auch noch DLLs dran hängen. Dann entferne alle .py-Dateien und lass nur die .pyc stehen. Dann packe alles zu einer EXE (z.B. mit NSIS oder Microsofts Tool, das diese MSI-Dateien erzeugt) und schaue, was es bringt.

Stefan
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

hmmmm.... sma hat mich ueberzeugt....
ich sehe kein praktischen nutzen fuer ein StrippedPython
cp != mv
Antworten