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文件,依次修改以下内容:- 文件最顶部导入Kivy依赖路径:
from kivy_deps import sdl2, glew - 找到
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' ] - 如果项目有自定义的kv文件、图片、配置文件等资源,在
Analysis块后添加资源映射:# 示例格式:a.datas += [('打包后资源的相对路径', '本地实际资源路径', 'DATA')] a.datas += [('main.kv', './main.kv', 'DATA')] - 找到
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 )
- 文件最顶部导入Kivy依赖路径:
- 第三步:重新打包
先删除之前生成的build、dist文件夹和旧的exe文件,再运行如下命令用修改好的spec文件打包:pyinstaller BooruScraperUltra.spec - 可选兼容调整
如果上述操作后依然报错,可尝试降级PyInstaller到适配性更好的4.2版本:pip install pyinstaller==4.2
也可以暂时去掉打包命令的-F参数,生成文件夹版程序,在cmd中运行exe查看完整报错日志,定位具体缺失的依赖项。
内容的提问来源于stack exchange,提问作者Lev_name
相关产品推荐
相关产品推荐

