You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows环境下PyInstaller打包Kivy应用成功但运行报错如何解决?

该报错本质是PyInstaller打包过程中未完整收录Kivy运行所需的依赖文件导致的,常见原因及对应解决方案如下:

可能的报错原因
  • PyInstaller未调用Kivy专属的打包钩子,无法自动识别Kivy的隐藏导入依赖
  • 打包时遗漏了Kivy核心运行所需的资源文件,包括字体、主题配置、动态链接库等
  • 项目中使用了Kivy扩展模块(如kivy.garden相关组件),未手动指定收录到打包目录
  • Windows系统中Kivy的相关路径未被PyInstaller正确读取,导致依赖缺失
  • 打包使用的PyInstaller版本和当前Kivy版本存在兼容性冲突
对应解决方案
  • 优先使用Kivy官方推荐的spec配置文件方式打包,首先运行命令生成基础配置:
    pyi-makespec --name 你的应用名 --onefile --windowed 你的主程序入口.py
  • 编辑生成的spec文件,补全Kivy依赖配置,参考示例:
    from kivy_deps import sdl2, glew
    a = Analysis(
        ['你的主程序入口.py'],
        hiddenimports=['kivy', 'kivy.core', 'kivy.core.window', 'kivy.core.text'],
        # 有自定义资源文件可以添加到datas字段,格式为('本地文件路径', '打包后的目标路径')
        datas=[],
        # 其余原有配置保持不变
    )
    pyz = PYZ(a.pure, a.zipped_data, cipher=None)
    exe = EXE(
        pyz,
        a.scripts,
        a.binaries,
        a.zipfiles,
        a.datas,
        # 添加下面这行配置收录sdl2、glew相关动态依赖
        *[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
        name='你的应用名',
        debug=False,
        # 其余原有配置保持不变
    )
    
    如果你使用了garden组件,需要在hiddenimports中添加对应的组件名,同时把garden的安装目录添加到datas字段
  • 编辑完成后,基于spec文件执行打包,命令为:pyinstaller 你的应用名.spec,不要直接对py文件打包
  • 若仍报错,先升级相关依赖到兼容的最新版本,执行命令:
    pip install --upgrade pyinstaller kivy kivy-deps-sdl2 kivy-deps-glew kivy-deps-angle
  • 打包前先在控制台直接运行你的Python主程序,确认代码本身没有运行错误后再执行打包
  • 如果不需要单文件打包,可以把生成spec时的--onefile参数替换为--onedir,打包为文件夹形式,降低依赖缺失概率,也方便后续排查具体缺失的文件

内容的提问来源于stack exchange,提问作者nikitapavlenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 06:00:04