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

标题有点吹牛,不过我夹带着标准库把Python的应用程序搞到了4.46Mb大小

 

这个思路可以用在你的项目里面。

方法一:

可以用Brython  这是一个浏览器版的python,用js实现的,可以玩一玩

 

方法二:魔改pyinstaller

网上的方法都是创建虚拟机环境,尽量减少没用的依赖,可都忽视了python本身没用的依赖

比如,你光写个hello world打包都有9兆

 

那么我们可以先打包试一试

pyinstaller -D demo.py

这里先打包成文件夹,(因为打包-F整体的话运行会慢一些)

Pyinstaller彻底解决打包过大的问题_第1张图片

可以发现有很多东西对不对?

加起来有20兆吧,这还是hello world的结果。

为了让代码可以调试,咱们用了动态导入的方式,如下

Pyinstaller彻底解决打包过大的问题_第2张图片

这样我们打包完成以后依然可以修改demo01.py文件,来达到调试的作用,这样就不用频繁打包了

Pyinstaller彻底解决打包过大的问题_第3张图片

一共就这两个文件,强烈建议自己尝试一下。

打包好以后找到这几个文件:

Pyinstaller彻底解决打包过大的问题_第4张图片

简单说一下,那个压缩包是标准库,会自动解压到c盘的缓存目录里,你报错没有找到模块的话可以考虑直接把py文件丢到这个压缩包里面。

demo01.py是我们调试用的,用来查看我们都导入了什么库,这些库运行的正常与否。

那个python38.dll是解释器库,也是必不可少的。

好的,我们用Shell运行一下,不写input() 的话双击运行会闪退。

Pyinstaller彻底解决打包过大的问题_第5张图片

大家都知道,tk已经很老了,所以咱们想砍掉他。

进入这个路径C:\Python38-32\Lib\site-packages\PyInstaller\loader\rthooks(你的可能不一样)

找到

Pyinstaller彻底解决打包过大的问题_第6张图片

pyi_rth__tkinter.py文件里面是这样的,

Pyinstaller彻底解决打包过大的问题_第7张图片

我们先备份备份备份备份一下文件,然后把报错的这几行注释掉:

Pyinstaller彻底解决打包过大的问题_第8张图片

这样我们就可以去掉tk界面库了。

重新打包,再次运行:

你会发现同样报错了,缺少socket的库,这个库在打包文件夹里面有,拖进去就能用,如果我们不想要它可以这样:

Pyinstaller彻底解决打包过大的问题_第9张图片

这是我已经修改的结果,程序正常运行了,缺少的库我也屏蔽了,上面这三行报错是我自己添加的:

Pyinstaller彻底解决打包过大的问题_第10张图片

上面这张图是之前的样子,然后我们稍微改一改。

Pyinstaller彻底解决打包过大的问题_第11张图片

同样注意备份哈,如果你不想重装pyinstall的话

这样最终我们不报错了:

Pyinstaller彻底解决打包过大的问题_第12张图片

等一下,这也7兆啊,骗子。。。

别着急,我们上压缩包

Pyinstaller彻底解决打包过大的问题_第13张图片

Pyinstaller彻底解决打包过大的问题_第14张图片

Pyinstaller彻底解决打包过大的问题_第15张图片

这样就可以了,看最终的成品

Pyinstaller彻底解决打包过大的问题_第16张图片

请记住,我们的demo01.py  这个文件是可以自由调试的,所以你缺什么库看报错就行了。

这样就去掉了pyinstaller打包所产生的多余的库,仅仅是hello world的库我们就去掉了整整18兆的空间

当然,这只是一个思路,真正应用的话需要反复的调试。

另外如果用pyqt5库就别纠结了,那玩意本来就大,而且推荐-D打包,不要打包成整体,那样运行太慢了。

本来2秒的事情搞到5秒

其实你用-D打包看起来文件很大,但是一压缩的话和-F是一样大的!!!

 

 

 

 

你可能感兴趣的:(python,pyqt5,python)