首页 > 解决方案 > F2PY:未找到 gfortran 编译器且缺少 DLL

问题描述

我需要使用 Python 中的 Fortran77 脚本,所以我尝试使用 F2PY 包。我没有 Fortran 知识,并且在我的 Windows 10 上没有任何 Fortran 编译器,所以我按照本指南安装了 gfortran 。我认为安装有效,因为如果我gfortran从 MSYS2 MinGW 64 位运行命令,我会得到

gfortran: fatal error: no input files
compilation terminated.

然后我尝试在此链接上运行 F2PY 文档中的示例,但出现此错误:

error: extension 'fib1' has Fortran sources but no Fortran compiler found

我猜 F2PY 没有看到 gfortran 编译器,所以我按照本指南的第四步设置了一个环境变量:我创建了一个新的环境变量(用户变量,而不是系统变量),调用C_INCLUDE_PATH并将其设置为C:\msys64\usr\bin\gfortran\include. 如果我尝试重新运行该示例,我会得到同样的错误。

我错过了什么?我应该使用系统变量而不是用户变量吗?此外,变量的值看起来有点奇怪,因为gfortran我在我的计算机上找到的唯一实例是文件,而不是目录......提前致谢!


更新:我能够通过添加C:\msys64\usr\bin到我的路径来解决这个问题!现在我可以成功编译 Fortran 模块,但是当我尝试在 Python 中导入扩展模块时,我得到了

ImportError: DLL load failed while importing fib1: Couldn't find the specified module.

我也包含C:\msys64\usr\lib在我的路径中,但错误仍然存​​在。有任何想法吗?


新更新:我终于能够解决丢失的 DLL 错误!对我来说,当我运行命令来创建python -m numpy.f2py -c fib1.f -m fib1扩展模块(最后一个目录包含以下文件:fib1.cp38-win_amd64.pydfib1.libs

libfib1.OPD3BD7YADI2T777PBURWLTYIK5TRWK2.gfortran-win_amd64.dll

我刚刚将此文件从.libs目录复制到当前目录(与我拥有 .pyd 文件的位置相同),现在 exension 模块运行良好!

我希望这可以帮助:)

标签: pythonnumpyfortrangfortranf2py

解决方案


推荐阅读