2009-09-11 9 views
6

Wir haben eine (Windows) Anwendung, mit der wir eine ganze Python-Installation (einschließlich mehrerer Module von Drittanbietern, die wir verwenden) verteilen, so dass wir Konsistenz haben und so müssen wir nicht alles installieren separat. Das funktioniert ziemlich gut, aber die Anwendung ist ziemlich groß.Trimmen Python Runtime

Offensichtlich verwenden wir nicht alles, was in der Laufzeit verfügbar ist. Ich möchte die Laufzeit reduzieren, um nur das einzubeziehen, was wir wirklich brauchen.

Ich plane py2exe auszuprobieren, aber ich möchte versuchen, eine andere Lösung zu finden, die mir nur helfen wird, die nicht benötigten Teile der Python-Laufzeit zu entfernen.

+1

Ausgezeichnete Frage, ich würde gerne wissen, wie die Größe meiner ausführbaren Python-Dateien auch zu verringern. Beachten Sie jedoch, dass einige Windows-Distributionen, einschließlich XP, nicht über die erforderlichen DLL-Dateien (MSVCR71.DLL & MSVCP71.DLL) verfügen, wenn Sie wxPython verwenden, um den Bootstrap auszuführen. –

+0

Eine andere Frage: Wird py2exe in Bezug auf Stabilität als "produktionsbereit" angesehen? – Dave

Antwort

5

Beide py2exe und pyinstaller (HINWEIS: für letztere Verwendung der SVN-Version, die veröffentlicht eine sehr lange in den Zahn ist ;-) tun ihre über modulefinder, die Standard-Bibliothek-Modul für die Suche nach alle Module verwendet „Beschneiden“ durch ein bestimmtes Python-Skript; Sie können natürlich das letztere selbst verwenden, um alle benötigten Module zu identifizieren, wenn Sie pyinstaller oder py2exe nicht vertrauen, um es in Ihrem Auftrag korrekt und automatisch auszuführen.

6

Ein Trick, den ich gelernt habe, während .py-Dateien zu versenden: Löschen Sie alle .pyc-Dateien in der Standardbibliothek, dann führen Sie Ihre Anwendung durch (das ist genug, um sicherzustellen, dass alle Python-Module benötigt werden geladen sein). Wenn Sie die Standardbibliotheksverzeichnisse untersuchen, wird es .pyc-Dateien für alle Module geben, die tatsächlich verwendet wurden. .py-Dateien ohne .pyc sind solche, die Sie nicht benötigen.

1

Diese py2exe page on compression schlägt vor, mit UPX zu komprimieren alle DLLs oder .pyd-Dateien (die eigentlich nur DLLs sind, immer noch). Offensichtlich hilft dies nicht beim Aussortieren nicht benötigter Module , aber es kann/wird die Größe Ihrer Distribution verringern, wenn das ein großes Problem ist.