2015-05-02 14 views
5

Ho bisogno di chiamare le routine dai moduli Fortran all'interno di Python. L'ho fatto con f2py e python2.7. Ha funzionato abbastanza bene.Installa f2py con python3

Ora, devo usarlo con python3 ma f2py non sembra essere compatibile con python3.

Vedo che alcune persone usano una versione denominata f2py3, ma non è disponibile tramite pip, non tramite Macport (sto usando un Mac). Inoltre, python3+numpy+f2py seem to be already integrated in Fedora.

Qualcuno è riuscito a utilizzare f2py3 (o il suo equivalente) con python3 su un Mac? In caso contrario, quale soluzione alternativa proponi per collegare le librerie Fortran con python3?

+0

Sono anche interessato a questo. Cordiali saluti, il tuo link Fedora sopra non restituisce risultati quando lo provo, ma ottengo alcune informazioni solo cercando 'f2py' tramite il tuo link. – JohnE

+0

Ho risolto il collegamento interrotto. Dovrebbe puntare sulle pagine di download della risorsa RPM per python3-numpy-f2py. – jvtrudel

+0

sì, funziona ora. Grazie! – JohnE

risposta

4

In alternativa, è possibile utilizzare e per chiamare le routine Fortran senza fare affidamento su f2py. Lo svantaggio di questo approccio è che devi specificare tu stesso le interfacce.

Ecco uno example che ho postato su SO qualche tempo fa.

+0

Molto interessante perché f2py non sembra essere più mantenuto (forse mi sbaglio?). Il problema è che ho bisogno di usare molti vecchi codici fortran. Le interfacce di refactoring non sono un compito facile e possono generare errori. Ma di sicuro, userò il tuo suggerimento per i nuovi codici. – jvtrudel

+0

Bene, per il vecchio codice potreste usare le opzioni del compilatore per influenzare i nomi delle funzioni generate (es. ['-fno-underscoring' per' gfortran'] (https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen- Options.html)) e prova a chiamare le routine direttamente da python (senza le ISO_C_Bindings). Quindi tutto il lavoro dovrebbe essere fatto sul lato Python. Si noti che questo è (in generale) non portatile e dipende dal compilatore utilizzato! –