2

我正在尝试使用 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_

编译时还有如下输出:

在::cdfio_simple:cdfio_simple.f90:cdfio_simple
get_useparameters:没有 cdfio_simple 使用的模块 netcdf 信息

我尝试使用的代码是(注意这是演示问题的简化代码):

模块 cdfio_simple
 使用 netcdf

  私人的
  公共 getvar

包含
  函数 getvar (cdfile,cdvar)

    CHARACTER(LEN=*), INTENT(in) :: cdfile, & ! 文件名
         &cdvar!多变的
    真实(种类=4),尺寸(1442,1021)::getvar!2D 真实

    !!* 局部变量
    整数 :: ncid, id_var
    整数 :: 状态
    字符(长度 = 300)::clvar

!f2py INTENT(in):: cdfile, cdvar

    clvar=cdvar

    状态=NF90_OPEN(cdfile,NF90_NOWRITE,ncid)

    状态=NF90_INQUIRE(ncid,unlimitedDimId=id_dimunlim)
    状态=NF90_INQ_VARID (ncid,clvar,id_var)
    状态=NF90_GET_VAR(ncid,id_var,getvar)

    状态=NF90_CLOSE(ncid)
    getvar(:,:)=1

  结束函数 getvar

结束模块 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

有谁知道我怎样才能让它正常工作?在此先感谢您的任何建议。

蒂姆

4

1 回答 1

3

来自编译器的“no module netcdf”错误消息可能表明存在以下任一问题:

  • /usr/local/netcdf/include/ 中没有安装 netcdf.mod 模块文件,它应该作为 netcdf-fortran 软件安装的一部分进行安装

  • 您使用的 Fortran 编译器与用于创建安装在该目录中的 netcdf.mod 模块文件不同。不同的 Fortran 编译器对二进制 .mod 文件有不同的格式。

于 2013-10-31T18:43:38.617 回答