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文件即可修复:
- 删除EXE构造参数中多余的整项目Tree声明,你已经通过a.datas添加了需要的资源文件,不需要重复打包整个项目目录
- 修正a.datas的添加格式,PyInstaller的datas条目要求为
(源文件/源文件匹配规则, 打包后的存放目录)的二元组,调整为规范写法 - 可选操作:如果修改后仍有兼容问题,可升级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
相关产品推荐
相关产品推荐

