虽然我找到了很多关于这个问题的答案和讨论,但我无法找到一个特别适合我的情况的解决方案。这就是它:
我有一个用FORTRAN写的主程序。我得到了一组非常有用的python脚本。我的目标是从我的FORTRAN主程序访问这些python脚本。目前,我只是这样调用FORTRAN中的脚本:
调用系统('python pyexample.py')
从.dat文件读取数据并将其写入.dat文件。这就是python脚本和FORTRAN主程序相互通信的方式。
我目前正在本地机器上运行我的代码。我安装了python和numpy,scipy等。
我的问题是:代码需要在远程服务器上运行。对于严格的FORTRAN代码,我在本地编译代码,并将可执行文件发送到服务器,在那里它在队列中等待。但是,服务器没有安装python。这台服务器被用作大学和工业界之间的一个数字处理站。在服务器上安装python和必要的模块不是一种选择。这意味着我的“调用系统('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脚本吗?有f2py可以将FORTRAN代码转换为python,但它不能反过来工作。
任何帮助都将不胜感激。谢谢您抽时间见我。
文森
PS:我在Ubuntu上使用python 2.6
发布于 2010-05-11 02:30:42
无论如何,您需要在服务器上获取Python运行时,否则将无法执行Python字节码。Ignacio建议直接调用libpython是正确的,但由于Fortran的参数传递约定,编写一个C包装器来处理Fortran和CPython嵌入API之间的接口会容易得多。
不幸的是,这样做很困难--编写一个可以调用Fortran子例程的Python程序要比反过来容易得多。
发布于 2010-05-11 02:21:56
你不会想要这些的。你应该做的是使用FORTRAN的FFI来与libpython对话,并从它的API。
https://stackoverflow.com/questions/2805244
复制相似问题