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

 

 

 

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐