f2py的配制与使用(windows and linux platform)

f2py(Fortran to Python),顾名思义,f2py是作为一个『连接』FortranPython这两种语言的工具而存在的。Fortran是数值计算领域常用的偏底层语言,其运行速度之快,满足了大量数值模拟过程中度计算速度的要求;而Python作为一个现代的面向对象的高级语言,有着简洁优美的语法,并且是扩展性最好的语言之一。f2py的存在正是为底层语言和高级语言建立了一个桥梁,让我们在继承两种语言的优点的同时,方便了对程序的调试和扩展。

更详细的关于f2py的介绍可以参考其官网f2py2e,里面有更详细的说明和背景介绍以及简单地使用方法。

下面分别介绍f2py在windows和linux平台下的安装和使用。

Linux下的安装和使用

Linux平台下的安装是十分简单地,基本上按照f2py安装过程就可以完成。当然Python的Numpy包中已经包含了f2py包,所以,以下都是通过直接安装Numpy来实现对f2py的安装和使用。

1. Numpy的安装

Linux下,Numpy的安装十分简单,只需要在终端执行以下命令:

pip install numpy

即可安装Numpy包。这里是通过pip这个工具安装的。

Note:若系统中存在两个版本的Python,请执行

 pip2 install numpy ###for python2.x

或者

pip3 install numpy ###for python3.x

2. 编译器的安装

一般来说,需要fortran和c的编译器,Linux平台下,一般预装了gcc,我们可以通过命令:

gcc

来测试gcc是否已经被安装;若出现如图的信息,则说明gcc已经被成功安装。 enter image description here

否则,则执行命令:

sudo apt-get install gcc

安装gcc。

同样的,执行命令

gfortran

若出现以下信息,则说明gfortran也被成功安装。

Note: gfortrangcc的一部分,详情可参考gcc/gfortran

3. f2py的执行与测试

一般来说,经过以上两步后,f2py已经安装成功。可以执行以下命令查看f2py的所在路径以及是否是可执行状态:

    //查看f2py所在的路径
    whereis f2py
    //执行
    f2py

enter image description here

如果出现上图所示情况,则f2py已经安装成功!

接着,我们开始测试一个Demo:

  • 创建一个命名为hello.f90的Fortran文件。

enter image description here

  • 进入到该文件所在的文件夹,并执行以下命令:

enter image description here

可以看到,编译成功!可以在Fortran源文件hello.f90所在的文件夹内找到生成的Python模块hello

  • 调用该模块hello

进入Python,Import该模块,执行以下命令:

enter image description here

可以看到,模块hello已经调用成功,输出了hello world字符串。 至此,f2py在Linux(测试发行版为Ubuntu)安装成功!

Windows下的安装和使用

Windows下f2py的安装要比Linux上复杂的多,只要是涉及到编译器上的选择以及这其中存在的版本差异导致的冲突。

1. Python与f2py的下载安装

笔者的环境为:

  • windows10,64bit

这里以Python2.7版本为例:

  • 下载Python2.7:Python2.7
  • 下载numpy:numpy

    Note:请选择与操作系统对应bit(32 or 64)的Python和numpy

numpy下载下来的文件为.whlwheel)文件,需要使用pip来进行安装。 安装之前,需要将Path\Python27Path\Python27\Scripts添加进windows环境变量。

打开cmd或者PowerShell,进入到numpy的.whl文件所在的目录,执行以下命令:

    pip install numpy_xxx.whl

如果出现以下错误:

    Fatal error in launcher: Unable to create process using '"'

则执行:

    python -m pip install numpy_xxx.whl

以上错误解决参考:http://stackoverflow.com/questions/24627525/fatal-error-in-launcher-unable-to-create-process-using-c-program-files-x86

通过以上步骤便可以成功安装numpy。测试f2py是否成功安装,执行命令:

python Path\Python27\Scripts\f2py.py

若出现如下提示,则安装成功。

enter image description here

2. 编译器的安装

推荐使用mingw-64作为windows下64bit的编译器。 下载mingw-64 download,下载如图所示的压缩包,并解压到C:\mingw下。

enter image description here

之后,将C:\mingw加入环境变量中。

enter image description here


3. 编译和执行

同样的,新建一个Fortran源文件hello.f

执行以下命令:

python Path\Python27\Scripts\f2py.py -c --fcompiler=gnu95 --compiler=mingw32 -m yourmodulename yourfortranfile

如图所示:

enter image description here

执行成功后,可以在Fortran源文件所在的目录下找到f2py生成的hello.pyd文件。 之后,我们进入Python,重复和Linux下类似的命令:

enter image description here

可以看到,执行成功!



以上便是f2py在Linux和windows平台下的安装使用过程。这里不建议使用msvc作为编译器,因为这里面会存在版本冲突。


参考链接:

Written on March 4, 2017