Хотя я нашел много ответов и дискуссий об этом вопросе, я не могу найти решение конкретным к моей ситуации.Вот:
Мне записали основную программу в ФОРТРАНЕ. Мне дали ряд сценариев Python, которые очень полезны. Моя цель состоит в том, чтобы получить доступ к этим сценариям Python из моей основной программы ФОРТРАНА. В настоящее время я просто называю сценарии от ФОРТРАНА как такового:
НАЗОВИТЕ СИСТЕМУ ('Python pyexample.py')
Данные считаны из .dat файлов и записаны в .dat файлы. Это - то, как сценарии Python и основная программа ФОРТРАНА связываются друг с другом.
Я в настоящее время выполняю свой код моей локальной машины. Мне установили Python с numpy, scipy, и т.д.
Моя проблема: код должен работать на удаленном сервере. Для строго кода ФОРТРАНА я компилирую код локально и отправляю исполняемый файл на сервер, где он ожидает в очереди. Однако серверу не установили Python. Сервер используется в качестве станции перемалывания чисел между университетами и промышленностью. Установка Python наряду с необходимыми модулями на сервере не является опцией. Это означает, что моя “СИСТЕМА ВЫЗОВА ('Python pyexample.py')” стратегия больше не работает.
Решение?: Я нашел, что некоторая информация о нескольких вещах в потоке - это выполнимый скомпилировать Python в машинный код?
Shedskin, Psyco, Cython, Pypy, Cpython API
Эти “модули” (? Не уверенный, если это - то, что назвать их), кажется, компилируют сценарий Python в код C или C++. По-видимому, не все функции Python могут быть переведены в C. Также, некоторые из них, кажется, экспериментальны. Действительно ли возможно скомпилировать мои сценарии Python с моим кодом ФОРТРАНА? Там существует f2py, который преобразовывает код ФОРТРАНА в Python, но он не работает наоборот.
Любая справка значительно ценилась бы. Спасибо за Ваше время.
Vincent
PS: я использую python 2.6 на Ubuntu
Так или иначе, вам необходимо установить среду выполнения Python на свой сервер, иначе будет невозможно выполнить байт-код Python. Игнасио находится на правильном пути, предлагая напрямую вызывать libpython, но из-за соглашений Фортрана о передаче параметров вам будет намного проще написать оболочку C для обработки интерфейса между Фортраном и API встраивания CPython.
К сожалению, вы делаете это непросто - намного проще написать программу Python, которая может вызывать подпрограммы Fortran, чем наоборот.
Вам не нужно ничего из этого. Что вы должны делать, так это использовать FFI FORTRAN для общения с libpython и использовать его API.