PyInstaller执行onefile单文件打包报KeyError:'CALL_FUNCTION'错误
报错原因
该异常由两类问题直接导致:
- 核心原因是版本不兼容:Python 3.11 及以上版本正式移除了旧版字节码指令
CALL_FUNCTION,替换为全新的调用指令组合;而当前环境安装的 PyInstaller 为 5.0 以下的旧版本,未对 Python 3.11+ 的字节码规则做适配,加载字节码匹配规则时找不到对应指令映射,直接抛出KeyError: 'CALL_FUNCTION'。 - 执行的命令本身存在参数写法错误:单文件模式的参数为
--onefile(带双横线前缀),直接写onefile会被 PyInstaller 识别为待打包的脚本路径,就算解决版本问题也无法正常执行打包。
解决步骤
- 首先升级 PyInstaller 到适配 Python 3.11+ 的版本,在命令行执行以下命令:
升级完成后执行pip install --upgrade pyinstallerpyinstaller --version验证,返回版本号 ≥ 5.0 即为适配成功。 - 修正打包命令的参数写法,基础单文件打包命令格式如下,替换为自己的项目入口脚本路径即可:
pyinstaller --onefile your_app_entry.py - 如果项目有强依赖要求必须使用旧版 PyInstaller、无法完成升级,可将本地 Python 版本降级到 3.10 及以下,该版本区间仍保留
CALL_FUNCTION字节码指令,可兼容旧版 PyInstaller。
内容的提问来源于stack exchange,提问作者pica trix
相关产品推荐
相关产品推荐

