2009-10-24 6 views
6

Ich entwickelte ein kleines Programm mit Python und Wxwidgets. Es ist ein sehr einfaches Programm, das nur einen Minirahmen verwendet, um einige Informationen anzuzeigen, wenn es benötigt wird, und den Rest der Zeit zeigt es nichts, nur ein Symbol in der Taskleiste.wie Größe der exe mit py2exe reduzieren

Wenn ich die exe mit py2exe (einzelne Datei exe-Modus, optimiert) erstellen, bekomme ich eine 6MB Datei!

Ich habe versucht, einige Bibliotheken oder DLL, die nicht benötigt wurden, aber immer noch, ich kann nicht sehen, warum ich eine so große Datei für nur einen Mini-Frame und ein Symbol in der Taskleiste bekommen.

Gibt es eine Möglichkeit, die Größe der mit py2exe erzeugten exe zu reduzieren?

hier ist, was ich ein bisschen selbst zu reduzieren tat:

options = {"py2exe":{"excludes" : ['_gtkagg', '_tkagg', 'bsddb', 'curses', 'email', 'pywin.debugger', 
           'pywin.debugger.dbgcon', 'pywin.dialogs', 'tcl', 
           'Tkconstants', 'Tkinter'], 
        "dll_excludes": ['libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll', 'tcl84.dll', 
           'tk84.dll'], 

Dank.

+1

vielleicht Embedded Runtime? –

Antwort

1

Der meiste Speicherplatz ist die Python-Laufzeit selbst. py2exe "kompiliert" Ihr Programm nicht zu nativen x86-Anweisungen oder Ähnlichem. Es bündelt nur Python, Ihre * .pyc-Dateien und alle Module, die Ihr Programm verwendet, zu einem Bundle, das alleine läuft.

Sie können also nur Ihre * .pyc-Dateien verteilen und es dem Benutzer überlassen, eine eigene Python-Distribution bereitzustellen und alle benötigten Module zu installieren. Dies ist keine sehr beliebte Option unter Windows, aber das ist normalerweise überall anders.

+1

Ja ich weiß, dass py2exe mein Programm nicht kompiliert, aber wenn ich über die "Optionen" (wie in meinem Beitrag gezeigt) zur Verfügung steht, um die Größe zu reduzieren. Ich erwarte nicht, eine Größe kleiner als die Laufzeit zu bekommen, aber nur einzubetten, was ich brauche, könnte in einer akzeptablen Größe für nur einen Mini-Rahmen resultieren. – attwad

4

Die Tatsache, dass Ihr Programm einfach ist, bedeutet nicht, dass es klein ist. Ihr Programm hat viele Abhängigkeiten durch den wxWidget-Stack und 6 MB sieht nicht so groß aus.

Aber zurück zu der Frage. Um einen py2exe generierte Programm zu schrumpfen, können Sie ein paar offensichtlichen Dinge tun:

  1. weniger Sachen verteilen: es scheint, dass Sie bereits auf diese Straße begonnen. Sehen Sie sich alles an, was mit Ihrem Programm verteilt wird, und beseitigen Sie es, wenn es nicht benötigt wird. DllDepend kann Ihnen sagen, warum eine DLL mit Ihrem Programm verteilt wird (wahrscheinlich weil ein Pyd es braucht). Für andere Module, entfernen Sie sie und versuchen Sie, wenn es noch funktioniert ...

  2. Komprimieren Sie es besser: run upx auf jeder Ihrer dll. Komprimiere dein endgültiges Programm/Archiv mit maximaler Kompressionsrate von 7zip.