2015-05-02 25 views
5

Python içindeki Fortran modüllerinden rutinleri çağırmalıyım. f2py ve python2.7 ile yaptım. Oldukça iyi çalıştı.python3 ile f2py yükleyin

Şimdi python3 ile kullanmam gerekiyor ama f2pypython3 ile uyumlu görünmüyor.

Bazı kişilerin f2py3 adlı bir sürümü kullandığını görüyorum, ancak Macport'lardan değil (Mac kullanıyorum), pip aracılığıyla kullanılamaz. Ayrıca, python3+numpy+f2py seem to be already integrated in Fedora.

Mac'te python3 ile herkes f2py3 (veya eşdeğerini) kullanmayı başardı mı? Eğer değilse, Fortran kütüphanelerini python3 ile hangi alternatif çözümü önerirsiniz?

+0

Ben de bununla ilgileniyorum. FYI, yukarıdaki Fedora bağlantınız, denediğimde sonuç vermiyor, ancak bağlantınız üzerinden 'f2py' araması yapmak için bazı bilgiler aldım. – JohnE

+0

Kırık linki tamir ettim. Python3-numpy-f2py için RPM kaynağının indirme sayfalarına işaret etmelidir. – jvtrudel

+0

evet, şimdi çalışıyor. Teşekkürler! – JohnE

cevap

4

Alternatif olarak, f2py'ye güvenmeden Fortran rutinlerini aramak için ve 'u kullanabilirsiniz. Bu yaklaşımın olumsuz tarafı, arayüzleri kendiniz belirlemeniz gerektiğidir.

İşte bir zaman önce SO üzerinde yayınlanan bir example.

+0

Çok ilginç çünkü f2py artık korunmuyor gibi görünüyor (belki de yanılıyor muyum?). Sorun, bir çok eski fortran kodları kullanmam gerektiğidir. Refactoring arayüzleri kolay bir iş değildir ve hata üretebilir. Ama emin olun, yeni kodlar için size öneri kullanacağım. – jvtrudel

+0

Eski kod için, oluşturulan işlev adlarını etkilemek için derleyici seçenekleri kullanabilirsiniz (örneğin, [g-fn 'ifadesi için' -fno-altdizeleme ') (https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen- Options.html)) ve rutinleri doğrudan python'dan (ISO_C_Bindings olmadan) çağırmayı deneyin. Sonra tüm işin Python tarafında yapılması gerekecekti. Bunun (genel olarak) taşınabilir olmadığını ve kullanılan derleyiciye bağlı olduğunu unutmayın! –