python - 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.pyd
fib1
.libs
libfib1.OPD3BD7YADI2T777PBURWLTYIK5TRWK2.gfortran-win_amd64.dll
我刚刚将此文件从.libs
目录复制到当前目录(与我拥有 .pyd 文件的位置相同),现在 exension 模块运行良好!
我希望这可以帮助:)
解决方案
推荐阅读
- c# - 将值插入数据库的 C# 代码不起作用
- c - 如何在 C 中使用 system() 而不是 rename() 重命名文件
- php - 仅使用二进制减少字符串长度,使其尽可能短
- python-3.x - 从 python 文件创建可执行文件
- visual-studio - 如何在 Visual Studio 中抑制“并非所有代码路径都返回值”错误消息
- java - Fortify:Java 8 的 Null 取消引用
- java - Java Float.compare() 是否总是产生正确的结果?
- sql - 查询视图时有没有提高性能的方法?
- react-native - 在 react-native 中向 webService 发送数据
- php - 如果更改特定字段,则不应要求所有必填字段