Pyinstaller彻底解决打包过大的问题
标题有点吹牛,不过我夹带着标准库把Python的应用程序搞到了4.46Mb大小这个思路可以用在你的项目里面。方法一:可以用Brython 这是一个浏览器版的python,用js实现的,可以玩一玩方法二:魔改pyinstaller网上的方法都是创建虚拟机环境,尽量减少没用的依赖,可都忽视了python本身没用的依赖比如,你光写个hello world打包都有9兆那么我们可以先打包试一试pyinsta
标题有点吹牛,不过我夹带着标准库把Python的应用程序搞到了4.46Mb大小
这个思路可以用在你的项目里面。
方法一:
可以用Brython 这是一个浏览器版的python,用js实现的,可以玩一玩
方法二:魔改pyinstaller
网上的方法都是创建虚拟机环境,尽量减少没用的依赖,可都忽视了python本身没用的依赖
比如,你光写个hello world打包都有9兆
那么我们可以先打包试一试
pyinstaller -D demo.py
这里先打包成文件夹,(因为打包-F整体的话运行会慢一些)
可以发现有很多东西对不对?
加起来有20兆吧,这还是hello world的结果。
为了让代码可以调试,咱们用了动态导入的方式,如下
这样我们打包完成以后依然可以修改demo01.py文件,来达到调试的作用,这样就不用频繁打包了
一共就这两个文件,强烈建议自己尝试一下。
打包好以后找到这几个文件:
简单说一下,那个压缩包是标准库,会自动解压到c盘的缓存目录里,你报错没有找到模块的话可以考虑直接把py文件丢到这个压缩包里面。
demo01.py是我们调试用的,用来查看我们都导入了什么库,这些库运行的正常与否。
那个python38.dll是解释器库,也是必不可少的。
好的,我们用Shell运行一下,不写input() 的话双击运行会闪退。
大家都知道,tk已经很老了,所以咱们想砍掉他。
进入这个路径C:\Python38-32\Lib\site-packages\PyInstaller\loader\rthooks(你的可能不一样)
找到
pyi_rth__tkinter.py文件里面是这样的,
我们先备份备份备份备份一下文件,然后把报错的这几行注释掉:
这样我们就可以去掉tk界面库了。
重新打包,再次运行:
你会发现同样报错了,缺少socket的库,这个库在打包文件夹里面有,拖进去就能用,如果我们不想要它可以这样:
这是我已经修改的结果,程序正常运行了,缺少的库我也屏蔽了,上面这三行报错是我自己添加的:
上面这张图是之前的样子,然后我们稍微改一改。
同样注意备份哈,如果你不想重装pyinstall的话
这样最终我们不报错了:
等一下,这也7兆啊,骗子。。。
别着急,我们上压缩包
这样就可以了,看最终的成品
请记住,我们的demo01.py 这个文件是可以自由调试的,所以你缺什么库看报错就行了。
这样就去掉了pyinstaller打包所产生的多余的库,仅仅是hello world的库我们就去掉了整整18兆的空间
当然,这只是一个思路,真正应用的话需要反复的调试。
另外如果用pyqt5库就别纠结了,那玩意本来就大,而且推荐-D打包,不要打包成整体,那样运行太慢了。
本来2秒的事情搞到5秒
其实你用-D打包看起来文件很大,但是一压缩的话和-F是一样大的!!!
更多推荐
所有评论(0)