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

PyInstaller打包Kivy应用报ValueError解包错误如何解决

错误成因

这个ValueError: not enough values to unpack (expected 3, got 2)报错由两个问题共同导致:

  • 你在EXE构造参数中额外传入了整个项目目录的Tree('C:\\Users\\HP\\Desktop\\TPM-Kivy'),而PyInstaller 4.3版本处理直接传入的根目录Tree对象时,返回的资源条目不符合要求的(名称, 路径, 类型码)三元组结构,只返回了2个元素导致解包失败
  • 你手动添加datas的格式也存在不规范问题,后续可能触发资源找不到的问题
解决方案

按以下步骤修改你的spec文件即可修复:

  1. 删除EXE构造参数中多余的整项目Tree声明,你已经通过a.datas添加了需要的资源文件,不需要重复打包整个项目目录
  2. 修正a.datas的添加格式,PyInstaller的datas条目要求为(源文件/源文件匹配规则, 打包后的存放目录)的二元组,调整为规范写法
  3. 可选操作:如果修改后仍有兼容问题,可升级PyInstaller到4.10以上版本,修复旧版本对Kivy依赖的处理bug,升级命令为pip install --upgrade pyinstaller

修正后的完整spec文件

from kivy_deps import sdl2, glew

# -*- mode: python ; coding: utf-8 -*-
block_cipher = None

a = Analysis(['main.py'],
             pathex=['C:\\Users\\HP\\Desktop\\TPM-Kivy'],
             binaries=[],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             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)

# 修正datas添加格式
a.datas += [('main.kv', '.')]
a.datas += [('Resources/*', 'Resources')]

# 移除多余的整项目Tree参数
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          *[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
          name='TPManager',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          upx_exclude=[],
          runtime_tmpdir=None,
          console=True , icon='GUIIcon.ico')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:42:01