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

时间:2010-03-17 13:04:13

标签: python fortran f2py

我正在尝试用python读取一些smps文件,并发现了一个fortran实现,所以我想我会给f2py一个镜头。问题是我没有遇到过fortran的经历。

我已经在我的Linux机器上成功安装了gfortran和f2py并在w2py页面上运行了示例,但是我在编译和运行大型程序时遇到了一些麻烦。有两个文件,一个带有文件阅读器包装器,另一个带有所有逻辑。他们似乎互相打电话,但是当我编译和链接或尝试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

任何帮助或建议表示赞赏。

1 个答案:

答案 0 :(得分:0)

我建议完全跳过fortran业务。

http://myweb.dal.ca/gassmann/smps2.htm

这里描述了MPS记录布局,看起来相对简单,可以在Python中分开。

http://myweb.dal.ca/gassmann/smps2.htm#CoreMPSline

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

我认为Fortran没有帮助。