我正在尝试使用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!变量
    REAL(种类= 4),尺寸(1442,1021):: getvar! 2D真实

    !! *局部变量
    整数:: ncid,id_var
    整数:: istatus
    字符(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

  结束功能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


有谁知道如何使它正常工作?在此先感谢您的任何建议。

提姆

最佳答案

来自编译器的“无模块netcdf”错误消息可能是
指示以下问题之一:


没有安装netcdf.mod模块文件
/ usr / local / netcdf / include /,应该在其中
已作为安装的一部分安装
netcdf-fortran软件
您使用的Fortran编译器与以前不同
创建安装在该目录中的netcdf.mod模块文件。
不同的Fortran编译器针对
二进制.mod文件。

关于python - 与fortran netcdf f2py,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19711239/

10-12 21:58