我想用python读取一些smps文件,并发现fortran实现,所以我想我会给f2py一个镜头。问题是我没有Fortran的经验。如何使用f2py从fortran程序创建python模块?
我已经在我的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 reader can be found here。
任何帮助或建议表示赞赏。
好点。 MPS格式并不算太差,我已经或多或少已经钉住了,麻烦始于随机扩展,其中包含许多嵌入式MPS规范的可能性。 我得到了印象,我将从python中立即读取fortran的数据结构,但这可能是我的一个误解。 – Lars 2010-03-17 14:58:09
@Lars Hellemo:Fortran非常不同(我曾经是一位Fortran程序员)。自动化翻译作为Python结构不会很聪明。最好的一个工具可以从Fortran代码创建命名元组列表。 – 2010-03-17 15:41:51
你能改写这个问题的标题吗?这是误导,因为此线程只包含有关您的具体问题的信息,并且与f2py无关 – 2010-11-01 16:02:09