2010-05-10 9 views
7

Anche se ho trovato molte risposte e discussioni su questa domanda, non sono in grado di trovare una soluzione particolare per la mia situazione. Eccolo:Come compilare gli script Python per l'uso in FORTRAN?

Ho un programma principale scritto in FORTRAN. Mi è stato dato un set di script Python che sono molto utili. Il mio obiettivo è accedere a questi script python dal mio programma FORTRAN principale. Attualmente, ho semplicemente chiamare gli script dal FORTRAN come tale:

SISTEMA DI CHIAMATA ('python pyexample.py')

dati vengono letti dal file .dat e scritti in file .dat. Questo è il modo in cui gli script Python e il programma FORTRAN principale comunicano tra loro.

Attualmente sto eseguendo il mio codice sul mio computer locale. Ho python installato con numpy, scipy, ecc.

Il mio problema: Il codice deve essere eseguito su un server remoto. Per codice FORTRAN rigorosamente, compilo il codice localmente e invii l'eseguibile al server dove è in attesa in una coda. Tuttavia, il server non ha python installato. Il server viene utilizzato come una stazione di macinatura numerica tra università e industria. Installare python insieme ai moduli necessari sul server non è un'opzione. Ciò significa che la mia strategia "CALL SYSTEM ('python pyexample.py')" non funziona più.

Soluzione ?: ho trovato alcune informazioni su un paio di cose in filo Is it feasible to compile Python to machine code?

Shedskin, Psyco, Cython, PyPy, CPython API

Questi “moduli” (? Non sono sicuro se questo è ciò che a chiamali) sembra compilare lo script python su codice C o C++. Apparentemente non tutte le funzionalità di Python possono essere tradotte in C. Inoltre, alcune di queste sembrano essere sperimentali. È possibile compilare i miei script Python con il mio codice FORTRAN? Esiste f2py che converte il codice FORTRAN in python, ma non funziona nel contrario.

Qualsiasi aiuto sarebbe molto apprezzato. Grazie per il tuo tempo.

Vincent

PS: sto usando Python 2.6 su Ubuntu

+0

Non posso rispondere alla tua domanda principale ma farò notare che f2py non converte Fortran in Python ma genera un'interfaccia da Fortran a Python in modo che Python possa chiamare Fortran. – Fortranner

risposta

3

In un modo o nell'altro, è necessario ottenere il runtime di Python sul server, altrimenti non sarà possibile eseguire il bytecode Python. Ignacio è sulla strada giusta con il suggerimento di invocare libpython direttamente, ma a causa delle convenzioni di passaggio dei parametri di Fortran, sarà molto più semplice scrivere un wrapper C per gestire l'interfaccia tra Fortran e l'API di incorporamento di CPython.

Sfortunatamente, lo stai facendo nel modo più difficile - è molto più semplice scrivere un programma Python che possa chiamare subroutine Fortran rispetto al contrario.

1

non si vuole una di queste. Quello che dovresti fare è usare FFI di FORTRAN per parlare con libpython e frob suo API.

Problemi correlati