我有以下问题:我已经安装了anaconda 3,并在我的anaconda环境中安装了一个名为"pygrib“的包。现在,当在我的环境中导入文件中的pygrib时,它会显示以下错误:
import pygrib ImportError: libhdf5.so.10: cannot open shared object file: No such file or directory
因为我是一个菜鸟,我真的不知道如何处理这些信息。我安装了h5py包和其他一些相关的包,但没有解决问题。该怎么办呢?
发布于 2017-11-12 14:51:44
这是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依赖项的地方。如果我能找出确切的问题,我会更新这个答案。
https://stackoverflow.com/questions/47224175
复制相似问题