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

Pyinstaller编译的Kivy应用无法运行问题求助

解决PyInstaller打包Kivy应用后的运行错误

从你的日志和配置文件来看,主要有两个核心问题导致应用无法运行:Kivy默认资源未被正确打包,以及窗口未初始化就调用set_icon方法。下面是分步解决方案:

1. 修复Kivy默认资源缺失问题

日志里的无法加载图片<C:\Users\jakub\AppData\Local\Temp\_MEI90522\kivy_install\data\glsl\default.png>是关键错误——PyInstaller没有自动包含Kivy自带的资源文件(比如glsl默认图、字体等),导致运行时找不到这些依赖。

你需要修改spec文件,把Kivy的data目录添加到datas列表中:

# -*- mode: python -*-
import kivy
from kivy.deps import sdl2, glew

block_cipher = None

a = Analysis(['main.py'],
             pathex=['C:\\Users\\jakub\\Desktop\\python\\Datelbot'],  # 注意转义反斜杠
             binaries=[('img/icon.ico', 'img')],
             # 添加Kivy的data目录和依赖库
             datas=[(kivy.kivy_data_dir, 'kivy_install/data')],
             hiddenimports=['kivy.core.window.window_sdl2', 'kivy.core.image.img_sdl2'],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)

# 添加SDL2和GLEW的依赖文件
a.datas += sdl2.dep_bins + glew.dep_bins

pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)

exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name='Datelbot.exe',
          debug=False,
          strip=False,
          upx=True,
          runtime_tmpdir=None,
          console=True,
          version='version.py',
          icon='img\\icon.ico')  # 转义反斜杠

2. 修复set_icon的AttributeError

日志最后报错AttributeError: 'NoneType' object has no attribute 'set_icon',这是因为你在窗口还没成功创建时就调用了Window.set_icon()。

修改你的main.py代码,把设置图标的逻辑放到App的on_start方法里,确保窗口已经初始化完成:

from kivy.app import App
from kivy.core.window import Window

class YourApp(App):
    def on_start(self):
        # 确保窗口存在后再设置图标
        if Window:
            Window.set_icon('img/icon.ico')

if __name__ == '__main__':
    YourApp().run()

3. 调整build脚本

你的build.bat可以简化,直接使用修改后的spec文件打包,不需要重复指定参数:

pyinstaller --clean Datelbot.spec

(注意把spec文件名改成你实际的文件名)

额外注意事项

  • 路径中的反斜杠要转义成\\,或者使用正斜杠/,避免Windows路径解析错误。
  • 确保你的Kivy和PyInstaller版本兼容:Kivy 1.10.0建议搭配PyInstaller 3.3~3.6版本(过高版本可能有兼容性问题)。
  • 打包时加上--clean参数可以清理旧的缓存文件,避免残留问题。

按照以上步骤修改后,重新打包应该就能正常运行了。

内容的提问来源于stack exchange,提问作者Jakub Bláha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:26:14