如何正确生成无控制台窗口的KivyMD应用.exe文件?
问题描述
我尝试用PyInstaller打包KivyMD程序,测试代码如下:
from kivymd.app import MDApp from kivymd.uix.label import MDLabel from kivymd.uix.screen import Screen class Demo(MDApp): def build(self): self.screen = Screen() self.l1 = MDLabel( text = "My Label" ) self.screen.add_widget(self.l1) return self.screen if __name__ == "__main__": Demo().run()
使用的main.spec文件内容:
# -*- mode: python ; coding: utf-8 -*- import os from kivy_deps import sdl2, glew block_cipher = None from kivymd import hooks_path as kivymd_hooks_path current_path = os.path.abspath('.') icon_path = os.path.join(current_path, 'imagens', 'icone.ico') a = Analysis(['main.py'], pathex=[current_path], binaries=[], datas=[], hiddenimports=[], hookspath=[kivymd_hooks_path], runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE(pyz, a.scripts, a.binaries, a.zipfiles, a.datas, [], *[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)], name='Eaton', debug=False, bootloader_ignore_signals=False, strip=False, upx=True, upx_exclude=[], runtime_tmpdir=None, icon=icon_path, console=False )
遇到的问题:设置console=True时,打包的exe能正常运行;但设置console=False时,程序启动报错。
解决方案
1. 排查图标路径问题
console=False时,程序不会输出控制台日志,若图标文件不存在或路径错误,会直接崩溃。先临时注释掉icon=icon_path这一行,重新打包测试,确认是否是图标导致的问题。
2. 添加必要的隐藏导入
PyInstaller可能无法自动检测到KivyMD的部分依赖模块,手动补充到hiddenimports:
hiddenimports=['kivymd.uix.label', 'kivymd.uix.screen', 'kivy.uix.screenmanager'],
3. 启用窗口模式错误提示
在EXE配置中添加disable_windowed_traceback=False,这样即使关闭控制台,程序崩溃时也会弹出错误提示窗口,方便定位问题:
exe = EXE(pyz, # 保留原有参数 console=False, disable_windowed_traceback=False )
4. 修改Kivy配置,强制窗口模式
在main.py开头添加Kivy配置修改,避免程序依赖控制台输出:
from kivy.config import Config Config.set('kivy', 'log_level', 'error') Config.set('kivy', 'console', '0') # 后续原有代码不变 from kivymd.app import MDApp ...
5. 禁用UPX压缩(可选)
UPX压缩可能损坏KivyMD的二进制依赖,暂时关闭upx=True,测试是否能正常运行。
6. 重新打包
修改完成后,执行命令重新打包:
pyinstaller main.spec
内容的提问来源于stack exchange,提问作者Mateus Coelho
相关产品推荐
相关产品推荐

