为什么f2py不包含所有参数?

时间:2015-06-29 18:59:22

标签: python fortran argument-passing gfortran f2py

我正在尝试为使用f2py的一些fortran代码构建一个python包,并且遇到了一个非常奇怪的问题。

我在Windows 8上使用Python 3.4.3 32位,gfortran 4.8.1和numpy 1.9.2。

f2py编译fortran代码,以便我可以从python中调用它。代码有多个子程序。其中一些有效,但有两个没有。重要的区别似乎是跨越多行的子程序声明。工作子例程在一行中声明。失败的跨越多行。

示例:

Python调用

    # import QC1_LIB ("library" of fortran code).
    import QC1_LIB
    TSDs = []
    message += "Duplicate and TSD Check have started...\n"
    QC1_LIB.dupandtsdchck(ts[0:##], data[0:##], ##, ##, ##, file, TSDs[0:##], ##)

其中##是一些在其他地方确定并分配的整数。

Fortran子程序声明

1234567
      SUBROUTINE DUPANDTSDCHCK(ts,data,nlines,nchar,frd,flnm,
     $     TSDs,counter)

python不识别fortran代码中的TSDs,即它认为只有7个参数,实际上有8个。它返回错误IndexError: QC1_LIB.dupandtsdchck() 7th argument (counter) can't be converted to int

我没有发现任何地方提到这种问题。发生了什么,我该如何解决?

注意:我意识到我需要对fortran代码进行一些更改,以便将所需的输出实际输入python工作区,因为f2py将子例程转换为函数,但我稍后会担心。

0 个答案:

没有答案