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

3
我正在尝试使用Python读取一些smps文件,发现了一种Fortran实现方式,于是我想尝试一下用f2py。问题是我没有任何Fortran经验。
我已经在我的Linux机器上成功安装了gfortran和f2py,并且运行了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 90 SPMS读取器可以在这里找到。欢迎提供任何帮助或建议。
1个回答

0

好的观点。MPS格式还不错,我已经掌握了这个,但麻烦在于随机扩展,其中你可以有许多嵌入式MPS规范。我有印象说我可以立即从Fortran中读取Python可读的数据结构,但这可能是我的误解。 - Lars
@Lars Hellemo:Fortran非常不同(我曾经是一名Fortran程序员)。自动翻译不会像Python结构那样聪明。最多,工具可以从Fortran代码创建命名元组列表。 - S.Lott
你能否重新表述一下这个问题的标题?它很容易让人误解,因为这个帖子只包含关于你特定问题的信息,与f2py无关。 - andreas-h

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接