f2py でコンパイルされたモジュールを Python で動作させるのに苦労しています。
Linux 64 ビット マシンで適切にコンパイルされる Fortran で書かれたソフトウェアがあります。さらに F2Py では、Fortran ビットも使用する Python モジュールをコンパイルします。
Python モジュールのコンパイル方法は次のとおりです。
f2py --fcompiler=gfortran -I"path-to-dir-with-mod-files" -c -m mod_landems mod_landem.f90
しかし、そのモジュールをインポートしようとすると、(Ipython で) エラーが発生します。
----> 1 import mod_landems
ImportError: ./mod_landems.so: undefined symbol: __nesdis_landem_module_MOD_nesdis_landem
正直なところ、私はこのエラーに混乱しています。検索はあまり役に立たなかったので、ここで質問する必要があります。どうすれば検索を機能させることができますか? modファイルと同じディレクトリにpythonモジュールコードを配置すると、同じエラーメッセージが表示されます。
ここに私の(プリミティブ)コードの一部があります:
module n_landem
implicit none
! INPUT VARIABLES
real(8) Angle
real(8) Sm_Content
real(8) Veg_Frac
real(8) Soil_Temp
real(8) Land_Temp
real(8) Snow_Depth
real(8) Frequency
! OUTPUT VARIABLES
real(8) Emis_H
real(8) Emis_V
contains
subroutine landem
USE NESDIS_LANDEM_MODULE
USE TYPE_KINDS, ONLY : fp
call NESDIS_LandEM(Angle,Frequency,Sm_Content,Veg_Frac,Soil_Temp,Land_Temp,Snow_Depth,Emis_H,Emis_V)
end subroutine landem
end module n_landem
少し前のことを正しく思い出せば、このモジュールはインポート可能でしたが、debian64 インストールまたは debian32bit コンピュータでは動作しないようです。