我有以下问题:我已经安装了anaconda 3并在我的anaconda环境中安装了名为“pygrib”的软件包。现在,当我在环境中的文件中导入pygrib时,它会显示以下错误:
import pygrib
ImportError: libhdf5.so.10: cannot open shared object file: No such file or directory
由于我是noobie,我真的不知道如何处理这些信息。我安装了h5py软件包和其他一些相关软件包,但它没有解决问题。怎么办?
答案 0 :(得分: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依赖性的地方。如果我能找出确切的问题,我会更新这个答案。