F2PY:gfortran编译器未找到且缺少DLL

2024-05-13 21:20:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要使用Python中的Fortran77脚本,所以我尝试使用F2PY包。我没有Fortran的知识,在我的Windows 10上也没有任何Fortran编译器,所以我安装了gfortran如下this guide。我认为安装工作正常,因为如果我从MSYS2 MinGW 64位运行gfortran命令,我会得到

gfortran: fatal error: no input files
compilation terminated.

然后,我尝试在this link运行F2PY文档中的示例,但出现以下错误:

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

我想F2PY没有看到gfortran编译器,所以我在this guide的第四步之后设置了一个环境变量:我创建了一个名为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.pyd文件,我认为它是扩展模块本身,一个fib1目录,包含一个.libs目录。最后一个目录包含以下文件:

libfib1.OPD3BD7YADI2T777PBURWLTYIK5TRWK2.gfortran-win_amd64.dll

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

我希望这能有所帮助:)


Tags: 模块文件命令目录编译器usr错误this