2013-08-31 9 views
6

Używam Pyinstaller do konwersji skryptu Pythona do pliku wykonywalnego, skrypt zawiera wiele importów z różnych pakietów, takich jak nltk, begin, json i cztery inne. Wynikowy plik wykonywalny dla 10-liniowego kodu to 54 MB, który jest nierealistycznie wysoki. Wiem, że pakietuje on wszystkie moduły w jednym pliku, ale czyni go tak dużym, jak sam skrypt Pythona ma tylko 2 KB.Jakie są ogólne wskazówki, jak zmniejszyć rozmiar pliku wykonywalnego Pyinstaller

Jakie są ogólne wskazówki, jak zmniejszyć rozmiar pliku ".exe"?

używam poniższego polecenia do konwersji skryptu

>pyinstaller.py -F -o output check.py 

mam importowane tylko poszczególne funkcje, a nie całe moduły, jak:

from nltk.metrics.agreement import AnnotationTask 

Importowane moduły mają samodzielnych funkcji i mam selektywnie importowane tylko 3-4 funkcje, ale to nie wydaje się mieć żadnego wpływu na wygenerowany rozmiar pliku exe, czy wszystkie funkcje marnują się importowane w pliku exe? Jak tego uniknąć?

Odpowiedz

2

Porównywasz dwie zupełnie różne rzeczy, plik exe, który generujesz, zawiera nie tylko Twój plik, ale także interpreter Pythona i wszystkie importowane moduły. Patrząc na mój python 2.7 zainstaluj pod oknami widzę, że ma on 83 MB. ntlk i co prawdopodobnie nie są najmniejszymi bibliotekami i musisz uwzględnić je wszystkie w pliku wykonywalnym w ten czy w inny sposób. Dla porównania, średnio-mały projekt generuje około 23 MB przy użyciu cx_freeze (i zawiera 10 MB biblioteki DLL QT4), więc możesz spróbować.

Można również skompresować plik wykonywalny za pomocą UPX, jak opisano here, które mogą pomóc.

+0

cfreeze rzuca mi błąd, ale generalnie generuje pliki o mniejszych rozmiarach w porównaniu do programu do usuwania piosenek? – stackit

+0

@Ali Nie mam pojęcia, nie używałem Pyinstallera od dłuższego czasu, ponieważ cx_freeze miał najpierw obsługę Python3, bez głębszych powodów. Najpierw wypróbuję UPX, aby zobaczyć, jak bardzo ci to pomaga. – Voo

+0

moduły mają niezależne funkcje i wybrałem selektywnie tylko 3-4 funkcje, ale to nie zmienia rozmiaru pliku – stackit

Powiązane problemy