Mac Intel平台Python3.9下Fortran代码编译模块遇阻求助
Mac Intel + Python3.9 下 Fortran 转 Python 模块的解决方案
1. 先装Fortran编译器
Mac Intel默认不带Fortran编译工具,用Homebrew装gcc(包含gfortran):
brew install gcc
2. 更新numpy
旧版numpy可能不兼容Python3.9的f2py新接口,执行:
pip install --upgrade numpy
3. 替代废弃的f2py.compile
原代码里的f2py.compile已被移除,用以下两种方法替代:
方法一:命令行直接编译
进入Dmmex_R14B_4.f所在文件夹,执行:
python -m numpy.f2py -c Dmmex_R14B_4.f -m Dmmex_R14B_4
编译完成后会生成类似Dmmex_R14B_4.cpython-39-darwin.so的文件,直接在Python里import Dmmex_R14B_4就能用。
方法二:Python脚本内调用
把原代码中的编译段替换成:
import numpy.f2py # 参数说明:-c 表示编译为扩展模块,-m 指定模块名,最后是源文件路径 numpy.f2py.run_main(['-c', '-m', 'Dmmex_R14B_4', 'Dmmex_R14B_4.f'])
运行脚本后同样会生成可导入的模块文件。
4. 关于mesonbuild导入失败的补充
如果坚持用mesonbuild,先装依赖:
brew install meson ninja
然后在源文件目录创建meson.build文件,内容如下:
project('Dmmex_R14B_4', 'fortran', 'python') py = import('python') py_ext = py.extension_module( 'Dmmex_R14B_4', sources : ['Dmmex_R14B_4.f'], install : false )
接着执行编译:
meson setup build cd build ninja
把build目录下生成的模块文件复制到Python脚本所在目录,即可导入。
内容的提问来源于stack exchange,提问作者Catherine Garcia
相关产品推荐
相关产品推荐

