2013-08-31 98 views
6

我正在使用Pyinstaller將python腳本轉換爲可執行文件,該腳本包含從nltk,begin,json和其他四個軟件包中導入的多個文件。由此產生的10行代碼的可執行文件是54MB,這是不現實的高,我知道它將所有模塊打包在單個文件中,但是它使它足夠大,因爲python腳本本身只有2KB。減少Pyinstaller生成的可執行文件的文件大小的一些常規提示

減少「.exe」文件大小的一些常規提示是什麼?

我使用下面的命令腳本

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

我只進口個別功能,而不是全部的模塊,例如轉換:

from nltk.metrics.agreement import AnnotationTask 

進口模塊具有獨立的功能,我有有選擇地只導入3-4個功能,但這似乎對生成的exe文件大小沒有任何影響,所有功能都浪費地導入exe文件中?如何避免這種情況?

回答

2

您正在比較兩個完全不同的東西,您生成的exe文件不僅包含您的文件,還包含Python解釋器和所有導入的模塊。看着我的Python 2.7安裝在Windows下,我發現它是83 MB大。 ntlk和co可能不是最小的庫,你必須以可選的方式將它們全部包含在可執行文件中。爲了便於比較,我的一箇中等規模的項目使用cx_freeze生成大約23 MB(包括10 MB的QT4 dll),所以你可以試試。

也可以使用UPX壓縮可執行文件,如here所述可能有所幫助。

+0

cfreeze對我來說是一個錯誤,但一般來說,它會輸出與pyinstaller相比更小的文件? – stackit

+0

@Ali我不知道,長時間沒有使用pyinstaller,因爲cx_freeze首先支持Python3,沒有更深的原因。我會首先嚐試UPX,看看有多大幫助你。 – Voo

+0

該模塊具有獨立的功能,我有選擇地只導入3-4功能,但這並不改變文件大小 – stackit