python调用fortran模块


Posted in Python onApril 08, 2016

在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

subroutine hello (a)
 
integer a
 
  write(*,*)'Hello from Fortran90!!!',a
 
end subroutine hello

编译

f2py -m foo -c foo.f90

运行

$ 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支持的数据类型有

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

以上所述就是本文的全部内容了,希望大家能够喜欢

Python 相关文章推荐
浅谈Python中数据解析
May 05 Python
Python实现可自定义大小的截屏功能
Jan 20 Python
python调用百度REST API实现语音识别
Aug 30 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
Nov 15 Python
python 监听salt job状态,并任务数据推送到redis中的方法
Jan 14 Python
python3.7 sys模块的具体使用
Jul 22 Python
Python流程控制 while循环实现解析
Sep 02 Python
Python数据库小程序源代码
Sep 15 Python
Python函数的定义方式与函数参数问题实例分析
Dec 26 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
Apr 22 Python
python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)
Dec 03 Python
python 实现全球IP归属地查询工具
Dec 18 Python
python3使用urllib模块制作网络爬虫
Apr 08 #Python
Python抓取电影天堂电影信息的代码
Apr 07 #Python
Python Requests安装与简单运用
Apr 07 #Python
Python Requests 基础入门
Apr 07 #Python
Python检测网站链接是否已存在
Apr 07 #Python
python多进程共享变量
Apr 06 #Python
python socket多线程通讯实例分析(聊天室)
Apr 06 #Python
You might like
在Windows版的PHP中使用ADO
2006/10/09 PHP
PHP抓取、分析国内视频网站的视频信息工具类
2014/04/02 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
2019/10/24 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
srcElement表格样式
2006/09/03 Javascript
js实现ASP分页函数 HTML分页函数
2006/09/22 Javascript
jQuery ctrl+Enter shift+Enter实现代码
2010/02/07 Javascript
url 编码 js url传参中文乱码解决方案
2010/04/11 Javascript
javascript多种数据类型表格排序代码分析
2010/09/11 Javascript
基于jquery &amp; json的省市区联动代码
2012/06/26 Javascript
获取非最后一列td值并将title设为该值的方法
2013/10/30 Javascript
javascript修改IMG标签的src问题
2014/03/28 Javascript
javascript 获取元素样式必杀技
2014/05/04 Javascript
JavaScript中的console.time()函数详细介绍
2014/12/29 Javascript
JS实现网页顶部向下滑出的全国城市切换导航效果
2015/08/22 Javascript
学做Bootstrap的第一个页面
2016/05/15 HTML / CSS
vue使用watch 观察路由变化,重新获取内容
2017/03/08 Javascript
JS简单实现点击按钮或文字显示遮罩层的方法
2017/04/27 Javascript
AngularJS实现动态添加Option的方法
2017/05/17 Javascript
利用纯JS实现像素逐渐显示的方法示例
2017/08/14 Javascript
vue filter 完美时间日期格式的代码
2019/08/14 Javascript
vue-socket.io接收不到数据问题的解决方法
2020/05/13 Javascript
JavaScript 中判断变量是否为数字的示例代码
2020/10/22 Javascript
[04:11]2014DOTA2国际邀请赛 CIS遗憾出局梦想不灭
2014/07/09 DOTA
pthon贪吃蛇游戏详细代码
2019/01/27 Python
python实现矩阵打印
2019/03/02 Python
基于python生成器封装的协程类
2019/03/20 Python
Python Django Vue 项目创建过程详解
2019/07/29 Python
pandas 强制类型转换 df.astype实例
2020/04/09 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
2020/12/04 Python
python中append函数用法讲解
2020/12/11 Python
求职信的七个关键技巧
2014/02/05 职场文书
企业员工培训感言
2014/02/26 职场文书
人生一定要学会的三样东西:放下、忘记、珍惜
2019/08/21 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis
win11自动弹出虚拟键盘怎么关闭? Win11关闭虚拟键盘的技巧
2023/01/09 数码科技