【问题标题】:How to compile Python scripts for use in FORTRAN?如何编译 Python 脚本以在 FORTRAN 中使用?
【发布时间】:2011-02-17 19:32:32
【问题描述】:

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

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

调用系统('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

【问题讨论】:

  • 我无法回答您的主要问题,但会指出 f2py 不会将 Fortran 转换为 Python,而是生成从 Fortran 到 Python 的接口,以便 Python 可以调用 Fortran。

标签: python fortran compilation


【解决方案1】:

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

不幸的是,您这样做很困难 - 编写一个可以调用 Fortran 子例程的 Python 程序比反过来要容易得多。

【讨论】:

    【解决方案2】:

    这些你都不想要。你应该做的是使用 FORTRAN 的 FFI 来与 libpython 对话并获取它的API

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-11
      • 1970-01-01
      • 2016-03-08
      • 2011-04-09
      • 1970-01-01
      • 1970-01-01
      • 2014-08-14
      • 1970-01-01
      相关资源
      最近更新 更多