PyInstaller4.2经spec打包Python3.9项目报UnicodeDecodeError异常
PyInstaller 4.2打包报错定位及修复
核心诱因
.spec文件的入口配置存在错误。
报错栈显示你在AutomateUpdater.spec第6行将AutomateUpdater.exe传入了Analysis的入口脚本列表:
a = Analysis(['AutomateUpdater.exe'],
PyInstaller的Analysis阶段会把入口文件当做UTF-8编码的Python源码读取、解析依赖。而AutomateUpdater.exe是Windows二进制格式的可执行文件,文件偏移位置3的字节0x90是PE格式文件的特征标识,完全无法被UTF-8解码,因此触发UnicodeDecodeError。
此前多次相同流程打包正常,说明该配置是近期误修改的——大概率是编辑spec文件时,把原Python入口脚本的路径错换成了历史打包生成的exe路径。
无关日志说明
以下日志提示不属于本次报错的诱因,无需额外处理:
UPX is not available:未检测到UPX压缩工具,为常规信息提示,不影响打包流程lib not found: api-ms-win-core-path-l1-1-0.dll:Python 3.9在Windows环境下的常规依赖告警,不阻塞打包流程
修复步骤
- 打开项目路径下的
AutomateUpdater.spec文件 - 找到
Analysis配置段,把入口列表中的AutomateUpdater.exe替换为项目实际的Python入口脚本路径,例如入口为AutomateUpdater.py时修改为:
a = Analysis(['AutomateUpdater.py'],
- 重新执行打包命令即可。
内容的提问来源于stack exchange,提问作者Lluis
相关产品推荐
相关产品推荐

