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

ImportError:如何解决苹果M1设备上F2PY无法正常使用的问题

报错根因

核心是编译生成的Fortran扩展库架构与调用它的Python解释器架构不匹配,你当前生成的my_lib.cpython-38-darwin.so是arm64架构,但运行脚本的Python是x86_64版本,因此无法加载。

解决方案

  • 第一步:先确认当前Python解释器的架构,执行以下命令:

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

    输出x86_64代表当前用的是Rosetta转译的x86版本Python,输出arm64代表用的是M1芯片原生版本Python。

  • 第二步:根据Python架构选择对应编译方式

    1. 如果你使用x86_64版本Python:
      编译时强制指定x86架构即可,命令调整为:
      arch -x86_64 f2py -c -m my_lib *.f
      
    2. 如果你使用arm64原生版本Python:
      先确认你安装的Fortran编译器(如gfortran)是arm64版本,关闭终端的Rosetta模式后,执行原编译命令即可生成匹配的arm64架构库:
      f2py -c -m my_lib *.f
      
  • 可选:编译双架构通用扩展库
    如果需要在x86和arm64环境下都能调用该库,可以直接编译为通用二进制文件,命令如下:

    f2py -c -m my_lib *.f --opt="-arch x86_64 -arch arm64" --lflags="-arch x86_64 -arch arm64"
    
  • 验证方法:编译完成后执行以下命令确认库的架构,和Python架构一致即可正常导入:

    lipo -info my_lib.cpython-38-darwin.so
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:54:00