我正在尝试使用f2py来编译一些使用netcdf库的fortran代码 . 编译似乎工作,但当我尝试在python中导入模块时,我收到错误消息:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: ./cdfio_simple.so: undefined symbol: netcdf_mp_nf90_get_var_2d_fourbytereal_
编译期间还有以下输出:
In: :cdfio_simple:cdfio_simple.f90:cdfio_simple
get_useparameters: no module netcdf info used by cdfio_simple
我试图使用的代码是(注意这是用于演示问题的简化代码):
MODULE cdfio_simple
USE netcdf
PRIVATE
PUBLIC getvar
CONTAINS
FUNCTION getvar (cdfile,cdvar)
CHARACTER(LEN=*), INTENT(in) :: cdfile, & ! file name
& cdvar ! variable
REAL(KIND=4), DIMENSION(1442,1021) :: getvar ! 2D REAL
!! * Local variables
INTEGER :: ncid, id_var
INTEGER :: istatus
CHARACTER(LEN=300) :: clvar
!f2py INTENT(in):: cdfile, cdvar
clvar=cdvar
istatus=NF90_OPEN(cdfile,NF90_NOWRITE,ncid)
istatus=NF90_INQUIRE(ncid,unlimitedDimId=id_dimunlim)
istatus=NF90_INQ_VARID ( ncid,clvar,id_var)
istatus=NF90_GET_VAR(ncid,id_var,getvar)
istatus=NF90_CLOSE(ncid)
getvar(:,:)=1
END FUNCTION getvar
END MODULE cdfio_simple
要编译它我使用命令:
f2py --fcompiler=intelem -c -I/usr/local/netcdf/include/ -L/usr/local/netcdf/lib -lnetcdff --f90flags=-fPIC -m cdfio_simple cdfio_simple.f90
有谁知道我怎么能让它正常工作?在此先感谢您的任何建议 .
蒂姆
1 回答
编译器中的“no module netcdf”错误消息可能表示存在以下任一问题:
/ usr / local / netcdf / include /中没有安装netcdf.mod模块文件,它应该作为netcdf-fortran软件安装的一部分安装
您使用的Fortran编译器与用于创建该目录中安装的netcdf.mod模块文件的编译器不同 . 不同的Fortran编译器具有不同的二进制.mod文件格式 .