0

我有以下问题:我已经安装了 anaconda 3 并在我的 anaconda 环境中安装了一个名为“pygrib”的包。现在,当在我的环境中的文件中导入 pygrib 时,它会向我显示此错误:

import pygrib ImportError: libhdf5.so.10: cannot open shared object file: No such file or directory

由于我是菜鸟,我真的不知道如何处理这些信息。我安装了 h5py 包和其他一些相关的包,但它没有解决问题。该怎么办?

4

1 回答 1

1

这是与 HDF5 库的链接错误。您是pygrib从源代码构建还是使用conda-forge通道安装它conda?当我使用conda-forge构建时,pygrib我遇到了同样的问题。来自 ECMWF 的 GRIB API(conda-forge它被列为ecmwf_grib)是 pygrib 所依赖的,而 HDF5 依赖来自 GRIB API 库中使用的 netCDF4。具体来说,使用最新的 HDF5(此时为 1.10.0)是导致问题的原因。改用 HDF5 1.8.* 可以pygrib正确导入。

要强制 conda 获取特定版本,只需执行以下操作:

conda install pygrib hdf5=1.8

这将conda使用旧的 HDF5 库再次解决包规范,并可能解决问题。这假设您处于conda安装pygrib到的环境中。如果你愿意,你也可以创建一个新的环境conda create -n <env name> pygrib hdf5=1.8

通常,当您在找不到库的情况下看到这些错误时,通常是安装了正确版本的库。使用conda,当更新软件包并且安装了您正在使用的软件包未正确链接的较新版本的库时,会发生这种情况。只要您可以找到导致问题的包/库,您就可以使用上述过程开始要求安装某些版本的东西,conda然后应该更新或降级,以便再次协同工作。希望这是有道理的并有所帮助。

这部分您可能感兴趣也可能不感兴趣,但我不能确定的是这个问题的根源。我的猜测是它与ecmwf_grib它的构建方式有关。这就是ldd我的安装显示旧的 HDF5 依赖项的地方。如果我能找出确切的问题,我会更新这个答案。

于 2017-11-12T06:51:44.157 回答