Skip to main content
 首页 » 编程设计

python之PyQt Bloat 和 Pyinstaller

2025年05月04日15飞鱼

我是 Qt 的新手,一直在使用 Qt-Designer 生成代码来与我用 Python 编写的程序进行交互。但是,当我想使用 pyinstall 将它们编译成二进制文件时,我得到的 /dist/ 大小约为 60 mb。使用 --onefile 选项时,我可以将其降低到大约 20 MB。

我确定膨胀是由于 Qt 导入了不必要的库造成的。谁能指出我减少这种令人担忧的膨胀的正确方向?我确信 20 MB 对于我正在编写的普通应用程序来说已经严重过剩了。感谢您的帮助。

使用:Python 2.6.5、pyinstaller 2.0、Qt 4.6.2、PyQt4

dist中生成的文件列表:

    bz2.so 
_codecs_cn.so 
_codecs_hk.so 
_codecs_iso2022.so 
_codecs_jp.so 
_codecs_kr.so 
_codecs_tw.so 
datetime.so 
_heapq.so 
libaudio.so.2 
libbz2.so.1.0 
libcrypto.so.0.9.8 
libexpat.so.1 
libfontconfig.so.1 
libfreetype.so.6 
libgcc_s.so.1 
libGLcore.so.1 
libglib-2.0.so.0 
libgobject-2.0.so.0 
libgthread-2.0.so.0 
libICE.so.6 
libjpeg.so.62 
liblcms.so.1 
libmng.so.1 
libncurses.so.5 
libncursesw.so.5 
libnvidia-tls.so.1 
libpcre.so.3 
libpng12.so.0 
libpython2.6.so.1.0 
libQt3Support.so.4 
libQtCore.so.4 
libQtGui.so.4 
libQtNetwork.so.4 
libQtOpenGL.so.4 
libQtSql.so.4 
libQtSvg.so.4 
libQtXml.so.4 
libreadline.so.6 
libSM.so.6 
libssl.so.0.9.8 
libstdc++.so.6 
libtiff.so.4 
libuuid.so.1 
libX11.so.6 
libXau.so.6 
libxcb.so.1 
libXdmcp.so.6 
libXext.so.6 
libXrender.so.1 
libXt.so.6 
libz.so.1 
_multibytecodec.so 
PyQt4.QtCore.so 
PyQt4.QtGui.so 
qt4_plugins 
readline.so 
sip.so 

请您参考如下方法:

如果您要链接到 Qt4,那么“膨胀”的数量是不可避免的,因为这些库是 Qt4 的依赖项。

为了验证这一点,您可以在库上使用 ldd 来查看它的共享依赖项。尝试运行 ldd libQtGui.so.4 看看它依赖了多少库。然后对所有其他共享库执行相同的操作。

我个人不会太担心可执行文件的大小。正如您所注意到的,这主要取决于 Qt,这意味着生成的二进制文件的大小几乎不会随着应用程序的增长而改变。