You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

苹果M1芯片运行Flask项目时cairo包架构不匹配问题求助

问题根因

该报错为Apple Silicon(M1系列)设备特有的架构不兼容问题:

  • 你最初通过MacPorts安装的cairo为x86_64架构二进制文件,无法被arm64架构的Python进程加载,报错信息中的mach-o, but wrong architecture就是直接证明
  • 后续通过Homebrew安装的cairo未被识别,是因为M1设备上Homebrew的默认库路径/opt/homebrew/lib没有被加入系统动态库搜索路径,Python的cairocffi库无法找到对应动态文件
解决方案

步骤1:清理旧的冲突安装

  • 卸载MacPorts安装的cairo:
    sudo port uninstall cairo
  • 卸载所有已安装的cairo版本,避免多版本冲突:
    brew uninstall --force cairo
  • 卸载相关Python依赖包,避免缓存影响:
    pip uninstall -y cairocffi weasyprint md2pdf

步骤2:安装原生arm64架构cairo并配置路径

注意:执行以下操作前确认你的终端没有开启Rosetta 2转译,右键终端图标点击「显示简介」,确认「使用Rosetta打开」选项未勾选

  • 安装Homebrew原生arm64版本的cairo及相关依赖:
    brew install cairo pango gdk-pixbuf libffi
  • 编辑你的shell配置文件(zsh对应~/.zshrc,bash对应~/.bash_profile),添加以下两行配置,将Homebrew的库路径加入系统搜索路径:
export DYLD_LIBRARY_PATH=/opt/homebrew/lib:$DYLD_LIBRARY_PATH
export PKG_CONFIG_PATH=/opt/homebrew/lib/pkgconfig:$PKG_CONFIG_PATH
  • 执行配置生效命令:
    source ~/.zshrc(若使用bash则替换为source ~/.bash_profile)

步骤3:重新安装Python依赖

  • 强制重装cairocffi,确保编译时能找到arm架构的cairo库:
    pip install --no-cache-dir cairocffi
  • 安装剩余依赖包:
    pip install weasyprint md2pdf

验证配置是否生效

执行以下命令,若正常输出版本号则配置成功:
python -c "import cairocffi; print(cairocffi.cairo_version_string())"

内容的提问来源于stack exchange,提问作者Roben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 21:45:11