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

PyInstaller打包Kivy项目生成的exe运行闪退后消失如何解决?

Kivy单文件打包后运行闪退问题解决方案

问题原因

PyInstaller默认的单文件打包规则不会自动识别并打包Kivy框架自带的核心资源(包含默认纹理图片、SDL2运行配套资源等),程序运行时临时解压目录缺失必要文件,触发资源加载失败导致启动崩溃。

解决方案

方案一:修改spec配置文件打包(推荐)

  • 先安装全Kivy的运行依赖包:
pip install kivy_deps.sdl2 kivy_deps.glew kivy_deps.angle
  • 生成初始spec配置文件:
pyi-makespec --onefile main.py
  • 编辑生成的main.spec文件:
    1. 在文件最顶部添加导入语句:
    from kivy_deps import sdl2, glew
    
    1. 找到datas = []配置项,添加Kivy核心资源路径映射,替换为你本地Python环境中Kivy的data目录实际路径:
    datas = [
      ("C:/你的Python安装路径/Lib/site-packages/kivy/data", "kivy/data"),
      # 如果你自己的项目有自定义图片、音频等资源,也在这里按同样格式添加路径映射
    ]
    
    1. 找到EXE配置段,在参数列表末尾添加SDL2、glew的依赖资源引入:
    exe = EXE(
        # 原有其他参数保持不变
        *[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
    )
    
  • 基于修改后的spec文件执行打包:
pyinstaller main.spec

方案二:临时验证用非单文件打包

如果需要先确认是否是单文件资源缺失导致的问题,可以先打非单文件版本测试:

pyinstaller main.py

运行dist/main目录下的main.exe,如果能正常启动,就可以确认是单文件打包的资源映射问题,再按方案一修改配置即可。

注意事项

打包前先删除之前生成的build、dist文件夹和旧的.spec文件,避免缓存影响打包结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 04:54:03