我有以下问题:我安装了anaconda 3,并在我的anaconda环境中安装了一个名为"pygrib"的包。现在,当在我的环境中的文件中导入pygrib时,它会显示以下错误:
import pygrib
ImportError: libhdf5.so.10: cannot open shared object file: No such file or directory
由于我是个无名小卒,我真的不知道该怎么处理这些信息。我安装了h5py软件包和其他一些相关的软件包,但它并没有解决问题。该怎么办?
这是HDF5库的链接错误。您是从源代码构建pygrib
还是使用conda-forge
通道通过conda
进行安装?当我使用pygrib
的conda-forge
构建时,我会遇到同样的问题。来自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库再次解决包规范,并可能解决问题。这假设您处于已将pygrib
安装到的conda
环境中。如果你想的话,你也可以用conda create -n <env name> pygrib hdf5=1.8
创建一个新的环境。
通常,当您在找不到库的地方看到这些错误时,通常需要安装正确版本的库。使用conda
,当更新程序包并安装了您正在使用的程序包未正确链接的库的新版本时,就会发生这种情况。只要你能找到引起问题的包/库,你就可以使用上面的过程开始要求安装某些版本的东西,然后conda
应该更新或降级这些东西,以便它们再次协同工作。希望这是有意义和帮助的。
这部分你可能感兴趣,也可能不感兴趣,但我不能肯定的是这个问题的根源。我的猜测是ecmwf_grib
和它是如何构建的。这就是ldd
为我的安装显示旧的HDF5依赖项的地方。如果我能弄清楚确切的问题,我会更新这个答案。