2009-10-24 14 views
6

Opracowałem mały program przy użyciu python i wxwidgets. Jest to bardzo prosty program, który wykorzystuje tylko mini ramkę do wyświetlania niektórych informacji w razie potrzeby, a resztę czasu nic nie pokazuje, tylko ikona na pasku zadań.jak zmniejszyć rozmiar exe przy użyciu py2exe

Kiedy buduję plik exe przy użyciu py2exe (tryb pojedynczego pliku, zoptymalizowany), otrzymuję plik o wielkości 6 MB!

Próbowałem nie dołączając niektórych bibliotek lub bibliotek DLL, które nie były potrzebne, ale nadal, nie widzę powodu, dla którego otrzymałem tak duży plik tylko dla mini ramki i ikony na pasku zadań.

Czy istnieje sposób na zmniejszenie rozmiaru exe generowane z py2exe?

tutaj jest to, co zrobiłem, aby zmniejszyć nieco sobie:

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'], 

Dzięki.

+1

Może to wbudowane środowisko wykonawcze? –

Odpowiedz

1

Większość przestrzeni to samo środowisko wykonawcze Python. py2exe nie "kompiluje" twojego programu do natywnych instrukcji x86, ani niczego w tym stylu. Po prostu łączy Pythona, pliki * .pyc i wszelkie moduły używane przez program w pakiecie, który działa samodzielnie.

Można zatem zdecydować się na rozpowszechnianie tylko plików * .pyc i pozostawienie go użytkownikowi, aby zapewnić własną dystrybucję Pythona i zainstalować potrzebne moduły. Nie jest to bardzo popularna opcja w systemie Windows, ale dzieje się tak zazwyczaj w innych miejscach.

+1

Tak Wiem, że py2exe nie kompiluje mojego programu, ale kiedy mówiłem o "opcjach" (jak pokazano w moim poście) dostępnych w celu zmniejszenia rozmiaru. Nie oczekuję, że otrzymam rozmiar mniejszy niż środowisko wykonawcze, ale samo osadzenie tego, czego potrzebuję, może spowodować akceptowalny rozmiar dla mini-ramki. – attwad

4

Fakt, że program jest prosty, nie oznacza, że ​​jest mały. Twój program ma wiele zależności przez stos wxWidget, a 6 Mb nie wygląda tak dobrze z tym wszystkim.

Ale wracamy do pytania. Kurczyć program py2exe generowane, można zrobić kilka rzeczy oczywiste:

  1. Rozłóż mniej rzeczy: wydaje się, że już rozpoczął tę drogę. Spójrz na wszystko, co jest dystrybuowane wraz z programem i wyeliminuj go, jeśli nie jest potrzebny. DllDepend może Ci powiedzieć, dlaczego biblioteka DLL jest dystrybuowana z twoim programem (prawdopodobnie dlatego, że potrzebuje jej pyd). W przypadku innych modułów, usuń je i spróbuj, jeśli nadal działa ...

  2. Kompresuj lepiej: uruchamiaj upx na każdej z bibliotek dll. Skompresuj ostatni program/archiwum z maksymalnym poziomem kompresji 7zip.