Pyinstaller彻底解决打包过大的问题

13 篇文章 1 订阅

标题有点吹牛,不过我夹带着标准库把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是一样大的!!!

 

 

 

 

  • 9
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值