我正试图为一些使用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工作区,但稍后我会担心这一点。在
目前没有回答
相关问题 更多 >
编程相关推荐