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

2024-09-30 12:17:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图为一些使用f2py的fortran代码构建pythonwrap,但遇到了一个非常奇怪的问题。在

我在Windows8上使用的是python3.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子程序声明

^{pr2}$

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

我在任何地方都没有发现这种问题。发生了什么事?我该怎么解决?在

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


Tags: 代码import声明参数lib例程fortranf2py

热门问题