升级Mac至Sonoma后运行Python脚本遇ninja非零退出状态1错误求助
Mac Sonoma升级后Python脚本调用ninja报错的解决办法
问题说明
升级MacOS Sonoma后,原本正常运行的Python脚本出现报错:
"/opt/homebrew/Cellar/python@3.10/3.10.9/Frameworks/Python.framework/Versions/3.10/lib/python3.10/subprocess.py", line 526, in run raise CalledProcessError(retcode, process.args, subprocess.CalledProcessError: Command '['/opt/homebrew/bin/ninja']' returned non-zero exit status 1.
直接在终端运行/opt/homebrew/bin/ninja时,提示:
ninja: error: loading 'build.ninja': No such file or directory
已尝试重装、更新ninja,问题未解决。
解决步骤
检查脚本的工作目录
ninja默认会在当前工作目录查找build.ninja文件,如果Python脚本执行时的工作目录不是项目的构建目录,就会触发这个错误。找到项目里build.ninja的实际路径,在脚本调用ninja前切换目录:import os os.chdir("/实际路径/包含build.ninja的目录")显式指定build.ninja路径
要是没法切换工作目录,调用ninja时用-f参数直接指定文件位置:import subprocess subprocess.run(["/opt/homebrew/bin/ninja", "-f", "/实际路径/build.ninja"], check=True)修复Homebrew环境
Sonoma升级可能打乱了Homebrew的环境配置:- 重新初始化Homebrew环境:
eval "$(/opt/homebrew/bin/brew shellenv)" - 重装ninja并检查环境问题:
跟着brew reinstall ninja brew doctorbrew doctor的提示修复所有权限、依赖相关的问题。
- 重新初始化Homebrew环境:
重置Python环境依赖
系统升级可能损坏了Python的依赖链:- 更新pip并重装脚本依赖:
pip3 install --upgrade pip pip3 install -r requirements.txt - 测试简单的ninja调用,排查subprocess模块问题:
import subprocess result = subprocess.run(["ninja", "-f", "/实际路径/build.ninja", "-v"], capture_output=True, text=True) print(result.stdout) print(result.stderr)
- 更新pip并重装脚本依赖:
内容的提问来源于stack exchange,提问作者Morcus
相关产品推荐
相关产品推荐

