用f2py在Python中嵌入Fortran
我需要一个脚本在目录结构中递归,从目录中的文件中提取数字,然后对这些数字执行计算。我使用Python作为脚本的主要语言,但希望使用Fortran进行数值计算。(我更喜欢Fortran,它是数值计算的更好工具) 我正在尝试使用f2py,但我不断地遇到奇怪的错误。f2py正在抱怨我的变量声明,试图将字符(*)更改为整数并追加!当我在变量声明后立即有注释时,将其添加到变量名上 子例程太长,无法在此处发布,但需要两个参数:输入文件名和输出文件名。它打开输入文件,读取数字,处理它们,然后写入输出文件。我打算使用Python脚本在每个目录中编写数字文件,并在其上调用Fortran子例程 我可以试着用同样的问题发布一个较小的示例,但是f2py有什么共同的“缺陷”吗?我使用的是gfortran v4.6.1、python v3.2.2和f2py v2 编辑:下面是一个小示例,有相同的错误: itimes-s.f(包含从python使用的子例程的文件): a、 txt:用f2py在Python中嵌入Fortran,python,fortran,f2py,Python,Fortran,F2py,我需要一个脚本在目录结构中递归,从目录中的文件中提取数字,然后对这些数字执行计算。我使用Python作为脚本的主要语言,但希望使用Fortran进行数值计算。(我更喜欢Fortran,它是数值计算的更好工具) 我正在尝试使用f2py,但我不断地遇到奇怪的错误。f2py正在抱怨我的变量声明,试图将字符(*)更改为整数并追加!当我在变量声明后立即有注释时,将其添加到变量名上 子例程太长,无法在此处发布,但需要两个参数:输入文件名和输出文件名。它打开输入文件,读取数字,处理它们,然后写入输出文件。我打
1
2
3
4
5
6
7
8
9
10.2
b、 仅使用gfortran编译和运行itests和itimes-s后的txt:
1.0000000000000000
4.0000000000000000
9.0000000000000000
16.000000000000000
25.000000000000000
36.000000000000000
49.000000000000000
64.000000000000000
81.000000000000000
104.03999999999999
但是,使用
f2py.py-c-m itimes-s.f运行f2py会产生大量错误。(由于篇幅原因未发布,但如果有人需要,我可以发布)我从未尝试过使用f2py包装完整的Fortran模块。但是,如果您将itimes
函数从模块提取到它自己的文件中,然后运行相同的f2py
命令,那么当我在本地尝试它时,一切似乎都正常工作(f2py v2、numpy 1.6.1、python 2.7.2、gfortran 4.1.2)
另外,请注意,您没有明确关闭输入和输出文件,尽管这与f2py的工作与否没有实际关系。请发布示例。在那之后,给出任何建议都会容易得多。您可以将具有相同问题的子例程减少到最小值,然后将其发布到此处。@steabert和Idigas,很抱歉延迟,请参见上面的示例。因为python模块的名称必须与Fortran模块的名称不同。然后您将拥有pythonmodule.fortranmodule.yourfunction
1
2
3
4
5
6
7
8
9
10.2
1.0000000000000000
4.0000000000000000
9.0000000000000000
16.000000000000000
25.000000000000000
36.000000000000000
49.000000000000000
64.000000000000000
81.000000000000000
104.03999999999999