macOS下PyInstaller打包报SystemError: codesign failure!错误如何解决?
macOS下PyInstaller打包报codesign failure错误解决方案
这个错误的核心是PyInstaller执行adhoc临时签名时,无法为Python内置的resource.cpython-39-darwin.so动态库生成合法签名,常见原因包括PyInstaller版本过旧、缓存文件损坏、Python安装源兼容性问题、系统签名工具参数不兼容。
前置问题修复:无法直接调用pyinstaller命令
你当前需要通过自定义pyinstaller.py脚本启动是因为PyInstaller的可执行文件没有加入当前Python的PATH路径,不需要额外写脚本,直接用Python模块调用即可:python -m PyInstaller 你的打包参数 app.py
核心错误修复步骤
- 第一步:清空所有缓存
删除PyInstaller全局缓存、项目本地编译缓存和配置文件:
rm -rf ~/Library/Application\ Support/pyinstaller/ rm -rf ./build ./dist ./app.spec
- 第二步:升级PyInstaller到最新版本
旧版本PyInstaller对macOS 13+、Python3.9+的签名逻辑兼容性很差,直接升级:
pip install --upgrade pyinstaller
- 第三步:加
--no-timestamp参数打包
默认加时间戳的签名逻辑在adhoc签名场景下极易失败,打包时关闭时间戳即可:
单文件打包命令示例:
python -m PyInstaller --onefile --no-timestamp app.py
图形化应用打包命令示例:
python -m PyInstaller --onefile --windowed --no-timestamp app.py
- 第四步:上述步骤失败时执行
如果你当前的Python是通过Homebrew安装的,替换为Python官网下载的官方Python3.9安装包重装Python和PyInstaller,Homebrew编译的Python动态库普遍存在签名异常问题,是这类报错的高发原因。 - 第五步:仅本地测试用,不推荐分发场景
可以直接关闭PyInstaller的自动签名逻辑,修改生成的app.spec文件,在EXE配置段新增codesign_identity=None参数,再用spec文件打包即可跳过签名步骤。
内容的提问来源于stack exchange,提问作者noobcode0000
相关产品推荐
相关产品推荐

