如何编译用于FORTRAN的Python脚本?

时间:2010-05-10 18:16:50

标签: python fortran compilation

虽然我找到了很多关于这个问题的答案和讨论,但我无法找到特定于我的情况的解决方案。这是:

我有一个用FORTRAN编写的主程序。 我得到了一组非常有用的python脚本。 我的目标是从我的主要FORTRAN程序访问这些python脚本。目前,我只是简单地从FORTRAN调用脚本:

CALL SYSTEM('python pyexample.py')

从.dat文件读取数据并写入.dat文件。这就是python脚本和主要FORTRAN程序相互通信的方式。

我目前正在本地计算机上运行我的代码。我安装了numpy,scipy等的python。

我的问题: 代码需要在远程服务器上运行。对于严格的FORTRAN代码,我在本地编译代码并将可执行文件发送到它在队列中等待的服务器。但是,服务器没有安装python。该服务器被用作大学和工业之间的数字运算站。不能在服务器上安装python和必要的模块。这意味着我的“CALL SYSTEM('python pyexample.py')”策略不再有效。

解?: 我在线程Is it feasible to compile Python to machine code?

中找到了一些关于几件事的信息

Shedskin,Psyco,Cython,Pypy,Cpython API

这些“模块”(?不确定是否可以调用它们)似乎将python脚本编译为C代码或C ++。显然不是所有的python功能都可以转换为C.同样,其中一些似乎是实验性的。是否可以使用我的FORTRAN代码编译我的python脚本?存在将FORTRAN代码转换为python的f2py,但它不起作用。

非常感谢任何帮助。谢谢你的时间。

文森特

PS:我在Ubuntu上使用python 2.6

2 个答案:

答案 0 :(得分:3)

无论如何,您需要在服务器上获取Python运行时,否则将无法执行Python字节码。 Ignacio正在建议直接调用libpython,但由于Fortran的参数传递约定,编写C包装器来处理Fortran和CPython嵌入API之间的接口会更容易。

不幸的是,你这样做很难 - 编写一个可以调用Fortran子程序的Python程序要容易得多。

答案 1 :(得分:2)

你不想要任何这些。你应该做的是使用FORTRAN的FFI与libpython交谈,并使用API