标题:解决Python+Pyqt5+Pyinstaller打包程序文件太大,执行时间太长。
概述:暑假去一个设计单位实习,被安排了制作一款工程计算软件,我使用Python+Pyqt5编写程序以及UI界面,在调试好了所有的问题后,我便开始琢磨怎么打包将程序发给领导,通过使用Pyinstaller打包程序后发现,程序有70多Mb,这发给领导肯定是不合适的,领导那XP系统不得卡死,由此,为了解决这个问题,以及与大家分享一波经验,才想着发表本篇博客。
- 原始未处理的打包程序
本人电脑安装了conda,由于在conda环境下的虚拟环境使用Pyinstaller打包会将很多不许要的库一并打包至程序力,导致打包程序体积过大,启动时间过长。如下图,便是没有采取任何措施,直接使用系统默认环境进行打包的程序。
如上图所示,初始程序有将近80多Mb,但是我主程序可能也就几千Kb大小。
2:简化打包程序方案1
在出现此问题后,在网上查询各种资料,发现可能就是因为conda环境下打包程序会将无用的库也打包至程序,可以采用虚拟环境,创建一个较为干净的打包环境。本文所用的虚拟环境是Pipenv,详细的使用说明大家可以去CSDN上自行搜索。在创建好虚拟环境后,在虚拟环境下pip install 需要的库(如Pyqt5,Pyinstaller等),在配置好虚拟环境后,就可以直接在虚拟环境下打包程序。
上图是执行打包的命令行,需要注意的是,大家在打包时候最好指定好需要依赖的site-packages。
如上图所示,打包程序在使用干净的虚拟环境打包后,程序体积直接小了一半。
3:简化打包最终方案
在程序打包到39Mb的时候,感觉程序还是有些大,还想进一步的减小程序的体积,以提高程序的运行效率。在知乎上找到了一篇很NB的博客。按他的方法试了试,但是发现他的方法在有中文路径时,程序无法执行。虽然没有实现他这种较为简要的打包方式,但是他的这种简化Pyqt5库的思路提醒了我。通过将Pyqt5库中一些没有用到的函数文件通通删除,在一顿操作下来,直接给Pyqt5包瘦了个身。最后,在虚拟环境下,运用经过瘦身后的Pyqt5库 进行打包,文件大小直接来到了24Mb,程序的体积实现了极大的缩减,也稍微提高了打包程序的运行效率。
结语:Python+Pyqt5的方式,给我们这种非专业软件出生的人能够快速的开发自己的应用程序,但由于其打包程序体积过大,启动时间太慢,也影响了我们开发程序的应用,本文提供了一种使用虚拟环境并简化Pyqt5库的方式来精简打包程序的方法。
最后,欢迎大家评论交流~~~~~~~~~~~~~~