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 的时间步长绘制日期时间