Python、NetCDF4 和 HDF5

Posted

技术标签:

【中文标题】Python、NetCDF4 和 HDF5【英文标题】:Python, NetCDF4 and HDF5 【发布时间】:2016-07-15 21:28:00 【问题描述】:

我不知道为什么安装这些软件包总是那么痛苦。我已经使用 NetCDF/HDF5 很长时间了,无论是在 Linux 还是 OSX 上,无论是 C、C++ 还是现在的 python,让它们安装或正常运行一直是一次纯粹的恐怖之旅。 netcdf4 和 hdf5 之间的简单依赖关系对许多人来说是一个巨大的痛苦,我真的希望这些软件包的开发人员最终能对此有所作为。

所以,我面临的最新具体问题是:我正在尝试为 python 安装 netCDF4。我收到以下错误:

Package hdf5 was not found in the pkg-config search path
Perhaps you should add the directory containing `hdf5.pc'

我尝试使用 apt-get 安装 hdf5 包,包括:

libhdf5-serial-dev libhdf5-串行 libhdf5-7 python-h5py libhdf5-dev hdf5-工具 hdf5-helpers libhdf5-7-dbg

使用 pip,我试过了:

pip install h5py

解决对 Cython 的依赖关系失败了,然后我手动安装了它。之后它安装(显然)但我无法在任何地方找到文件 hdf5.pc 。

我在这里拉扯我的头发。任何人都知道如何解决这个问题?

【问题讨论】:

你考虑过使用 Anaconda 吗?您所有的安装问题都会消失 :) 【参考方案1】:

当您混合分发包和自建包时,您会增加出现问题的机会(正如您所发现的那样)。

另外,你想要 h5py 还是 netcdf-python?我不认为 netcdf-python 依赖于 h5py。相反,netcdf-python 绑定到 C netcdf 库,而后者又依赖于 C HDF5 库。

h5py 同样绑定到 C HDF5

涉及很多软件,这是真的。一步一步地工作,最终它会更有意义(已经这样做了 15 年的人说......它变得更容易了!)

    如果您要进行任何并行编程,则需要 MPI 实现 HDF5 现在为 NetCDF4 提供了基础。如果您想要并行编程,请针对您的 MPI 实现构建 HDF5。 安装NetCDF4的C库 现在,python 绑定可以从 NetCDF4、HDF5 和 MPI 中获取所需的内容

是的,需要配置和构建很多软件。 pkg-config 在这里可以帮上大忙!当您看到 Package hdf5 was not found in the pkg-config search path 时,这意味着您应该调整您的 PKG_CONFIG_DIR 以指向 package-config 文件的位置。不幸的是,hdf5 不提供 .pc (package-config) 文件,因此您必须手动完成该部分。哦,netcdf 也不提供 pkg-config:它提供了 netcdf-python 将使用的脚本 nc-config。

让我举一个具体的例子:

MPICH-master 安装在/home/robl/soft/mpich-master HDF5 安装在/home/robl/soft/hdf5-1.8.16 例如配置为../../hdf5-1.8.16/configure --prefix=/home/robl/work/soft/hdf5-1.8.16 CC=/home/robl/work/soft/mpich/bin/mpicc --enable-parallel NetCDF4 安装在/home/robl/soft/netcdf-master 例如配置为./configure CC=$HOME/work/soft/mpich/bin/mpicc --prefix=$HOME/work/soft/netcdf-master CPPFLAGS=-I$HOME/work/soft/hdf5-1.8.16/include LDFLAGS=-L$HOME/work/soft/hdf5-1.8.16/lib

现在你已经拥有了 netcdf-python 的所有先决条件

顺便说一下,http://unidata.github.io/netcdf4-python/ 列出了先决条件和必要的配置选项

不要沉迷于对 hdf5.pc 的吹毛求疵。如果您的路径中有 nc-config,它将提供所需的信息。

如果您正在构建并行编程,请将 CC 设置为您的 MPI 编译器。如果没有,您可以跳过 ``export CC=...'' 步骤:

cd netcdf-python
export CC=$HOME/work/soft/mpich/bin/mpicc
export PATH=$HOME/work/soft/netcdf-master/bin:$PATH
python setup.py build

【讨论】:

以上是关于Python、NetCDF4 和 HDF5的主要内容,如果未能解决你的问题,请参考以下文章

netcdf4-python:随着从 netcdf 对象多次调用切片数据,内存增加

Python:使用 netCDF4 替换 netcdf 文件中的值

Python3.7 函数从 netCDF4 的时间步长绘制日期时间

尝试在 Windows 8 上安装 netCDF4 时出现“需要 Python 版本 2.7,在注册表中找不到”错误

为啥 netCDF4 文件大小与写入方式如此不同?

经纬度子集的 netcdf4 提取