python打包exe工具使用心得

        这几天功能开发的差不多了,想提升下python打包后程序的启动速度,因为现在启动时感觉太慢了,慢的时候要6秒,快的时候也要4秒,但是经过一番探索,发现貌似没有工具可以解决这个问题,本质还是因为,现在的打包程序通常要把python解释器打包进去,然后程序最后还是python解释执行,启动的时候相当于,先开个python,然后再用python执行入口代码,这个环节是必不可少的,所以后面可能不会在这方面投入精力,想快直接换语言吧。

        为了看看有没有解决方案,我又试了两个打包工具,一个是nuitka,这个工具是唯一寄予厚望的,因为它的打包思路是把python代码转成c,再经过优化,再编译成二进制,这个从思路上来说,感觉就像把python转成c一样,但是很遗憾,在我的项目上没有打包成功,而且耗时过长,并且看官网说目前对pyqt5支持的并不完整,所以可能就算打包成功,也不知道能不能运行,而且出来问题,不知道怎么排查,总之这个工具兼容性不是特别好,特别是你的程序依赖了特别多的第三包时尤其如此,最重要的是,我打包一个简单的pyqt5程序,最后的可执行文件启动速度并没有太大的提升,所以最后果断放弃了。

        第二个工具是cxfreeze,这个工具,使用比较简单,我装上之后,没有做任何配置,就把我的项目打包成功了,唯一的问题是打包后过大,有一个G,而且这是在虚拟环境,同样的项目我用pyinstaller打包,只有200多M。

        所以,经过这两天的尝试,我觉得还是pyinstaller最香,只要在虚拟环境,打包后不会太大,当然这需要你对你项目的依赖非常清楚,用到哪些装哪些,只装最上层的包就行,最上层的依赖会自动安装,所以不用记录。

        还有个问题是,经过测试,打包pyqt5程序最好不要启用upx,因为upx是压缩工具,它虽然会让打包后的文件变小,但是启动时因为要解压,所以反而会拖累到速度,我的项目启用upx压缩后减小了100M左右,但是启动速度明显变慢,所以我最后还是关了。

        速度问题暂时先这样了,后面如果特别要优化,估计只能换c#或者cpp了。

猜你喜欢

转载自blog.csdn.net/zy1620454507/article/details/127924602