在python中调用fortran代码,要用到f2py这个程序。它的项目主页在此。现在该项目已经合并到numpy中了,先安装python再装好numpy,就可以使用f2py。不过对windows平台必须使用gnu的fortran编译器gfortran,在此下载。装完了python,numpy和gfortran这三样东西之后,还必须更改如下几个环境变量:
1.在$PATH中添加gfortran的路径,我的是c:\Program Files\pythonxy\mingw\bin\
2.在$PATH中添加python的路径,我的是c:\Python26\
3.新建环境变量C_INCLUDE_PATH,添加gfortran头文件的路径,我的是c:\Program Files\pythonxy\mingw\include\
好啦现在f2py就可以用了。新建fortran程序foo.f90如下
foo.f90
1
2
3
4
5
6
7
|
subroutine hello (a) integer a write( * , * ) 'Hello from Fortran90!!!' ,a end subroutine hello |
编译
1
|
f2py -m foo -c foo.f90 |
运行
1
2
3
4
5
6
7
|
$ python Python 2.7.6 (default, Jun 22 2015, 17:58:13) [GCC 4.8.2] on linux2 Type "help" , "copyright" , "credits" or "license" for more information. >>> import foo >>> foo.hello(15) Hello from Fortran90!!! 15 |
另外附上f2py支持的数据类型有
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
integer[ | * 1 | * 2 | * 4 | * 8 ], logical[ | * 1 | * 2 | * 4 | * 8 ] integer * ([ - 1 | - 2 | - 4 | - 8 ]) character[ | * ( * ) | * 1 | * 2 | * 3 | ... ] real[ | * 4 | * 8 | * 16 ], double precision complex [ | * 8 | * 16 | * 32 ] <dim> | <start>:<end> | * | : intent([ in | inout | out | hide | in ,out | inout,out | c | copy | cache | callback | inplace | aux ]) dimension(<dimspec>) common, parameter allocatable optional, required, external depend([<names>]) check([<C - booleanexpr>]) note(<LaTeX text>) usercode, callstatement, callprotoargument, threadsafe, fortranname pymethoddef entry |
以上所述就是本文的全部内容了,希望大家能够喜欢