2013-08-31 41 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