使用autopytoexe打包KivyMD脚本生成300MB大EXE无法运行,求助打包APK
KivyMD项目打包问题解决方案
1. EXE体积300MB是否正常
这属于KivyMD项目打包的正常情况。autopytoexe底层基于PyInstaller实现打包,默认配置下会将完整Python解释器、Kivy/KivyMD全量库文件、内置主题、字体、图标等资源全部打包进程序,即使你只用到了框架的少量功能,打包后体积通常也在200-400MB区间。
你可以通过以下方式压缩体积:
- 使用纯净虚拟环境打包,仅安装项目必需的依赖,避免无关库被打包
- 配置PyInstaller排除项,手动剔除KivyMD未使用的多语言、主题资源,配合UPX压缩工具,优化后体积可压缩至100MB以内
2. EXE无法正常启动的原因及修复
2.1 代码逻辑bug
你的代码存在一处运行时错误:outofrange方法中将self.verbsleft直接赋值为空字符串,覆盖了原有的MDLabel控件对象,当用户完成全部20个动词测试时,后续调用self.verbsleft.text会抛出属性异常。将该行代码修改为self.verbsleft.text = ''即可修复。
2.2 打包配置问题
KivyMD存在大量动态导入的模块,PyInstaller默认无法自动识别,需要在autopytoexe的隐藏导入配置中添加以下内容:
kivymd.icon_definitions kivymd.fonts kivymd.uix.screen kivymd.app kivymd.uix.button kivymd.uix.textfield kivymd.uix.label kivymd.uix.toolbar
同时建议先使用文件夹模式打包,运行exe时可以看到详细报错日志,方便定位缺失的依赖项。
3. 打包APK的实现方法
你可以使用Buildozer工具完成Android安装包的编译,步骤如下:
- 在Linux或WSL环境中安装Buildozer和相关依赖
- 项目根目录执行
buildozer init生成配置文件,修改配置中的包名、版本号,添加kivy、kivymd为项目依赖 - 执行
buildozer android debug命令等待编译完成,生成的APK文件会保存在项目bin目录下
内容的提问来源于stack exchange,提问作者erramidev
相关产品推荐
相关产品推荐

