Win10下使用f2py编译Fortran代码生成Python模块报错如何解决
报错原因分析
- 编译器参数不兼容:你使用的是MinGW的gfortran编译器,但f2py在Windows系统下默认会套用微软MSVC编译器的参数规则。报错中出现的
/w、/Qopenmp、/F6000000、/fpe:3、/nologo均为MSVC专属的斜杠开头参数,gfortran仅识别减号-开头的参数,无法解析这类MSVC参数,因此抛出大量参数不存在/无效的报错。 - 工具链识别失败:f2py在Windows下默认优先查找MSVC编译环境,当检测不到对应MSVC环境时,就会抛出
error: Unable to find vcvarsall.bat报错,也没有自动切换到你已经配置好的MinGW工具链。 - 架构不匹配隐患:从报错日志可见你安装的MinGW为32位版本(编译目标Target为mingw32),但你使用的是64位Python 3.9,即便参数问题解决,32位编译器生成的模块也无法在64位Python中正常加载。
解决方案
- 手动指定MinGW编译器:运行编译命令时明确指定使用mingw32编译器,修改命令为:
f2py -c simple.f90 -m simple --compiler=mingw32 - 替换64位MinGW:如果执行上述命令仍有架构相关报错,卸载当前32位MinGW,安装MinGW-w64 64位版本,配置好对应bin目录的系统环境变量后重新执行编译命令即可。
- 配置默认编译器(可选):如果需要频繁使用MinGW编译Python扩展,可以在Windows用户目录下创建名为
pydistutils.cfg的配置文件,写入以下内容:
[build] compiler=mingw32
后续运行f2py命令时无需每次手动指定编译器。
内容的提问来源于stack exchange,提问作者behnam4444
相关产品推荐
相关产品推荐

