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

Python Kivy代码经PyInstaller打包为exe后打开报TypeError如何解决

Kivy程序PyInstaller打包后运行TypeError解决步骤

以下是对应环境(Windows 7、PyInstaller 4.4、Python 3.8)的适配解决方案:

  • 第一步:生成配置文件
    先不要直接执行打包命令,先运行如下命令生成spec配置文件:
    pyi-makespec -F BooruScraperUltra.py
  • 第二步:修改spec配置
    打开生成的BooruScraperUltra.spec文件,依次修改以下内容:
    1. 文件最顶部导入Kivy依赖路径:
      from kivy_deps import sdl2, glew
      
    2. 找到Analysis块的hiddenimports参数,添加Kivy缺失的动态依赖:
      hiddenimports=[
          'kivy',
          'kivy.core.window.window_sdl2',
          'kivy.core.image.img_sdl2',
          'kivy.core.text.text_sdl2',
          'kivy.core.video.video_sdl2',
          'kivy.core.audio.audio_sdl2',
          'kivy.core.clipboard.clipboard_sdl2',
          'PIL._tkinter_finder'
      ]
      
    3. 如果项目有自定义的kv文件、图片、配置文件等资源,在Analysis块后添加资源映射:
      # 示例格式:a.datas += [('打包后资源的相对路径', '本地实际资源路径', 'DATA')]
      a.datas += [('main.kv', './main.kv', 'DATA')]
      
    4. 找到EXE块,在参数末尾添加sdl2和glew的依赖库路径:
      exe = EXE(pyz,
           a.scripts,
           a.binaries,
           a.zipfiles,
           a.datas,
           *[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)], # 新增这一行
           name='BooruScraperUltra',
           debug=False,
           bootloader_ignore_signals=False,
           strip=False,
           upx=True,
           upx_exclude=[],
           runtime_tmpdir=None,
           console=True )
      
  • 第三步:重新打包
    先删除之前生成的build、dist文件夹和旧的exe文件,再运行如下命令用修改好的spec文件打包:
    pyinstaller BooruScraperUltra.spec
  • 可选兼容调整
    如果上述操作后依然报错,可尝试降级PyInstaller到适配性更好的4.2版本:
    pip install pyinstaller==4.2
    也可以暂时去掉打包命令的-F参数,生成文件夹版程序,在cmd中运行exe查看完整报错日志,定位具体缺失的依赖项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 22:57:03