当前用Python包装现代Fortran代码的最佳方法

当前用Python包装现代Fortran代码的最佳方法,python,numpy,fortran,fortran95,fortran2003,Python,Numpy,Fortran,Fortran95,Fortran2003,我知道,并且曾经包装过一些旧的Fortran 77代码,但我的理解是,它不适用于较新的Fortran 95代码。我已经研究了我应该使用什么,并且遇到了和,它们似乎都没有给出任何关于它们当前状态的解释,或者如何使用它们。我已经看到,f2py版本可以选择使用第三代f2py,但它被评论为不起作用。鉴于此,我不知道应该使用哪个项目。我应该用哪一个 这个问题现在已经交叉发布到(并在)计算科学堆栈交换网站上得到了回答,因为我以前曾包装过一些C/C++代码,但它们不支持Fortran。不过,它们链接到以下内容

我知道,并且曾经包装过一些旧的Fortran 77代码,但我的理解是,它不适用于较新的Fortran 95代码。我已经研究了我应该使用什么,并且遇到了和,它们似乎都没有给出任何关于它们当前状态的解释,或者如何使用它们。我已经看到,f2py版本可以选择使用第三代f2py,但它被评论为不起作用。鉴于此,我不知道应该使用哪个项目。我应该用哪一个

这个问题现在已经交叉发布到(并在)计算科学堆栈交换网站上得到了回答,因为我以前曾包装过一些C/C++代码,但它们不支持Fortran。不过,它们链接到以下内容

至少FortWrap声明它们支持Fortran95,但是您可能必须使用FortWrap来获取C/C++包装和Python包装的SWIG。
f90wrap将根据f90源代码自动生成Python包装(并支持派生类型)。

也许可以通过
ctypes
调用fortran库?f2py(包括在scipy中)似乎支持Fortan95。你试过了吗?你也可以试着在scicomp.stackexchange上提问,因为那里有很多人使用Python和Fortran。通过使用现代Fortran的“与C的互操作性”功能,并使编译后的Fortran向外界呈现类似C的接口,你可能会取得进展。f2py2e(numpy/scipy中的一个)限制了Fortran 95的支持(它的设计思想是包装旧的Fortran 77代码),因此编写了fwrap和G3 f2py。然而,两者似乎都有一部分是不活跃的,而且文档,尤其是G3F2Py的文档,还不清楚。我提到了f2py,我更愿意避免SWIG。PyFrTRAN也是一个旧代码,可能不适用于NUMPY(它是为数字设计的),FRTWRAP是为C++设计的,它又缺少与NUMPY的集成。你救了我一天!