我正在尝试通过--upx-dir选项将UPX与Pyinstaller一起使用以减小可执行文件的大小,但是我得到了以下消息:
255 INFO: An exception occured when testing for UPX:
256 INFO: OSError(8, 'Exec format error')
257 INFO: UPX is not available.
我有OS X 10.10.3 Yosemite,Python 3.6.2 :: Anaconda,Pyinstaller 3.3.1,UPX 3.94。
我尝试使用UPX的所有5个Linux版本进行下载,并且每个版本都导致相同的错误。搜索此错误表明,当shell脚本顶部没有包含shebang行时,就会发生此错误,但是在这种情况下,我认为这不是问题。
我在运行Windows 10和Win32版本的UPX的虚拟机上以相同的方式进行了尝试,它工作得很好,表明UPX可用,并且减少了大约30%的大小! UPX release page说“所有版本在功能上都是等效的”,因此我似乎无法查明问题所在。其中之一应该可以在我的主机操作系统上正确运行吗?
只是要清楚我到底在做什么,我在Pyinstaller命令中键入--upx-dir=
,然后拖动包含UPX可执行文件的upx-3.94文件夹。如果还有其他步骤可以正确使用UPX,请告诉我,尽管这在Windows VM中对我有用。
我还用Homebrew安装了UPX,并且在终端中使用UPX程序本身,可以键入upx <executable>
来压缩文件。但是,这根本没有减少大小,因此,必须具有将UPX 与 Pyinstaller一起使用的优势,而不是采用Pyinstaller生成的可执行文件,然后再通过UPX运行它,如Windows VM中的结果所示。
编辑:Pyinstaller文档说UPX被“应用到最终的可执行文件”,因此实际上没有任何区别。
我正在尝试尽可能减小可执行文件的大小。我之前也已经排除了模块,但是我真的很想让UPX正常工作。