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 相关文章推荐
PyTorch上搭建简单神经网络实现回归和分类的示例
Apr 28 Python
想学python 这5本书籍你必看!
Dec 11 Python
python最小生成树kruskal与prim算法详解
Jan 17 Python
在python Numpy中求向量和矩阵的范数实例
Aug 26 Python
pytorch模型预测结果与ndarray互转方式
Jan 15 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
May 13 Python
解决python打开https出现certificate verify failed的问题
Sep 03 Python
安装pyinstaller遇到的各种问题(小结)
Nov 20 Python
matplotlib事件处理基础(事件绑定、事件属性)
Feb 03 Python
手残删除python之后的补救方法
Jun 26 Python
详解非极大值抑制算法之Python实现
Jun 28 Python
pytorch中的torch.nn.Conv2d()函数图文详解
Feb 28 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
控制PHP的输出:缓存并压缩动态页面
2013/06/11 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
鼠标图片振动代码
2006/07/06 Javascript
JSCode all of Brower 全局屏蔽网页右键功能 具体实现
2013/06/05 Javascript
js导入导出excel(实例代码)
2013/11/25 Javascript
js和jquery设置disabled属性为true使按钮失效
2014/08/07 Javascript
javascript定时器完整实例
2015/02/10 Javascript
js实现三张图(文)片一起切换的banner焦点图
2015/08/25 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
2016/03/11 Javascript
JavaScript严格模式详解
2017/01/16 Javascript
详解Vue中使用v-for语句抛出错误的解决方案
2017/05/04 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
2018/01/23 jQuery
浅谈FastClick 填坑及源码解析
2018/03/02 Javascript
axios拦截设置和错误处理方法
2018/03/05 Javascript
基于vue-ssr的静态网站生成器VuePress 初体验
2018/04/17 Javascript
详解Vue 多级组件透传新方法provide/inject
2018/05/09 Javascript
默认浏览器设置及vue自动打开页面的方法
2018/09/21 Javascript
Vue和React组件之间的传值方式详解
2019/01/31 Javascript
详解vue引入子组件方法
2019/02/12 Javascript
[16:56]教你分分钟做大人:司夜刺客
2014/10/30 DOTA
[06:35]2014DOTA2国际邀请赛 老男孩梦圆西雅图中国军团世界最强
2014/07/22 DOTA
Python简明入门教程
2015/08/04 Python
Anaconda多环境多版本python配置操作方法
2017/09/12 Python
Python调用C# Com dll组件实战教程
2017/10/12 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
python3实现网络爬虫之BeautifulSoup使用详解
2018/12/19 Python
Python发送邮件封装实现过程详解
2020/05/09 Python
python将logging模块封装成单独模块并实现动态切换Level方式
2020/05/12 Python
Python 如何反方向迭代一个序列
2020/07/28 Python
pytorch 实现L2和L1正则化regularization的操作
2021/03/03 Python
大学生简历中个人的自我评价
2013/10/06 职场文书
质检部经理岗位职责
2014/02/19 职场文书
服务员态度差检讨书
2014/10/28 职场文书
临时用工协议书范本
2014/10/29 职场文书
2015年工程部工作总结
2015/04/30 职场文书
感恩主题班会教案
2015/08/12 职场文书