我尝试使用f2py将fortran函数与我的主要python代码集成。但是,当我试图包含一个特定的“.f”文件时,f2py会引发一个错误(但可以很好地处理其他“.f”文件)。我为我的主“.f90”文件创建了以下最小工作示例:module min_example
implicit none
public :: calc_min
contains
subroutine calc_min
print*, 'test'
return
end subroutine calc_min
end module min_example
我用的是:gfortran -c min_example.f90
gfortran -c qromb.f
f2py -c qromb.f min_example.f90 -m min_example
任何帮助都将不胜感激!谢谢您!在
最新消息:我一直在四处搜寻,发现的线索很少。有人认为f2py有内联注释的问题,但是删除它们并没有帮助。我读到的另一个答案建议将“.f”文件转换为“.f90”文件,但说实话,我不知道这两者之间的区别(我对fortran非常陌生)。所以我不知道该怎么做(我不太清楚.f文件的结构),也不知道它是否会减慢速度。在
另一个更新:使用“f2py-m min_example min_example.f90 qromb.f”进行编译时,将得到以下输出:Reading fortran codes...
Reading file 'min_example.f90' (format:free)
Reading file 'qromb.f' (format:fix,strict)
Post-processing...
Block: min_example
Block: min_example
Block: calc_min
Block: qromb
Block: trapzd
Block: func
Block: polint
Post-processing (stage 2)...
Block: min_example
Block: unknown_interface
Block: min_example
Block: calc_min
Block: qromb
Block: trapzd
Block: polint
Building modules...
Constructing call-back function "cb_func_in_trapzd__user__routines"
def func(x,q): return sum
Building module "min_example"...
Constructing wrapper function "qromb"...
routsign2map: Confused: function qromb has externals ['func'] but no "use" statement.
sign2map: Confused: external func is not in lcb_map[].
append_needs: unknown need 'func'
append_needs: unknown need 'func'
qromb(func,a,b,ss,q,[func_extra_args])
Constructing wrapper function "trapzd"...
trapzd(func,a,b,s,n,q,[func_extra_args])
Constructing wrapper function "polint"...
polint(xa,ya,x,y,dy,[n])
Constructing F90 module support for "min_example"...
Constructing wrapper function "min_example.calc_min"...
calc_min()
Wrote C/API module "min_example" to file "./min_examplemodule.c"
Fortran 90 wrappers are saved to "./min_example-f2pywrappers2.f90"
并生成以下文件:min_example-f2pywrappers2.f90
min_example.mod
min_example.o
qromb.o
min_examplemodule.c
这看起来很有前途,但是当我进入python时,我不能导入函数。在
python主程序调用子程序_使用main.f90模块调用特定的.f文件运行f2py时出现问题?(未知的子程序?)...