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

如何在M1 Mac上让cffi同时生成x86_64与arm64架构的mach-o文件?

解决M1 Max Mac上cffi双架构编译问题

问题根源

你的VSCode终端大概率是通过Rosetta 2转译运行的x86_64环境,而系统终端是原生arm64环境,导致cffi编译生成的架构文件只能适配其中一种环境。解决核心是让cffi生成同时支持arm64和x86_64的Universal二进制文件。

具体操作步骤

  • 确认当前Python环境架构
    运行以下命令,输出arm64代表原生arm64环境,x86_64则是Rosetta转译环境:

    python3 -c "import platform; print(platform.machine())"
    

    建议直接在系统终端(原生arm64环境)执行后续操作。

  • 卸载现有cffi

    pip uninstall -y cffi
    
  • 设置编译环境变量,强制生成双架构文件
    执行以下命令配置编译参数:

    export ARCHFLAGS="-arch arm64 -arch x86_64"
    export CFLAGS="-arch arm64 -arch x86_64"
    export LDFLAGS="-arch arm64 -arch x86_64"
    
  • 从源码编译安装cffi
    使用--no-binary :all:强制跳过预编译wheel,从源码编译生成双架构文件:

    pip install --no-binary :all: cffi
    
  • 验证编译结果
    先找到cffi的安装目录:

    pip show cffi | grep Location
    

    进入该目录下的cffi子文件夹,运行以下命令查看二进制文件架构:

    lipo -info _cffi_backend.cpython-311-darwin.so
    

    如果输出包含Architectures in the fat file: _cffi_backend.cpython-311-darwin.so are: arm64 x86_64,说明双架构编译成功。

后续说明

完成以上操作后,不管是系统终端的arm64环境,还是VSCode终端的x86_64转译环境,都能正常加载cffi,netmiko程序也不会再出现架构不匹配的ImportError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 08:35:19