如何使用f2py从fortran程序创建python模块?

如何使用f2py从fortran程序创建python模块?,python,fortran,f2py,Python,Fortran,F2py,我正在尝试用python读取一些smps文件,并找到了一个fortran实现,所以我想我应该试一试f2py。问题是我没有使用fortran的经验 我已经成功地在我的Linux机器上安装了gfortran和f2py,并在W f2py页面上运行了这个示例,但是我在编译和运行这个大型程序时遇到了一些问题。有两个文件,一个带有文件读取器包装,另一个带有所有逻辑。它们似乎互相调用,但当我编译、链接或尝试f2py时,会出现错误,它们无法找到彼此: f95 -c FILEWR~1.F f95 -c SMPSR

我正在尝试用python读取一些smps文件,并找到了一个fortran实现,所以我想我应该试一试f2py。问题是我没有使用fortran的经验

我已经成功地在我的Linux机器上安装了gfortran和f2py,并在W f2py页面上运行了这个示例,但是我在编译和运行这个大型程序时遇到了一些问题。有两个文件,一个带有文件读取器包装,另一个带有所有逻辑。它们似乎互相调用,但当我编译、链接或尝试f2py时,会出现错误,它们无法找到彼此:

f95 -c FILEWR~1.F
f95 -c SMPSREAD.F90 
f95 -o smpsread SMPSREAD.o FILEWR~1.o 

FILEWR~1.o In function `file_wrapper_'
FILEWR~1.F(.text+0x3d) undefined reference to `chopen_'
usrlibgcci486-linux-gnu4.4.1libgfortranbegin.a(fmain.o) In function `main'
(.text+0x27) undefined reference to `MAIN__'
collect2 ld returned 1 exit status  
我还尝试将名称更改为FILE_WRAPPER.F,但没有帮助

使用f2py,我发现我必须添加一条注释才能使其接受自由格式,并将其保存为新文件,然后尝试:

f2py -c -m smpsread smpsread.f90
我得到了很多输出和警告,但错误似乎是这样的:

getctype: No C-type found in "{'typespec': 'type', 'attrspec': ['allocatable'],  'typename': 'node', 'dimension': [':']}", assuming void.
这个


任何帮助或建议都将不胜感激。

我建议完全跳过fortran业务

这里描述了MPS记录布局,在Python中看起来比较容易区分

无论如何,您都必须为所有数据定义适当的Python类(或命名耦合)


我认为Fortran帮不了什么忙。

说得好。MPS格式还不算太糟糕,我已经大致确定了,问题开始于随机扩展,其中包括许多嵌入式MPS规范。我得到的印象是,我可以让fortran中的数据结构立即在python中可读,但这可能是我的误解。@Lars Hellemo:fortran与此完全不同(我曾经是fortran程序员)。自动翻译不像python结构那样聪明。一个工具最多只能从Fortran代码中创建命名元组的列表。你能把这个问题的标题改一下吗?这是误导性的,因为此线程只包含有关您的特定问题的信息,与f2py无关