Python,NetCDF4和HDF5

Ion*_*chy 8 python pip hdf5 netcdf python-2.7

我不知道为什么这些软件包总是很难安装.我已经使用NetCDF/HDF5很长一段时间了,无论是在Linux还是OSX上,无论是C,C++还是现在的python,无论是在Linux还是OSX上,它总是让他们无法安装或正常运行.netcdf4和hdf5之间的简单依赖关系是许多人痛苦的源头,我真的希望这些软件包的开发人员最终能够做些什么.

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

Package hdf5 was not found in the pkg-config search path
Perhaps you should add the directory containing `hdf5.pc'
Run Code Online (Sandbox Code Playgroud)

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

  • libhdf5串行-dev的
  • libhdf5串行
  • libhdf5-7
  • 蟒蛇,h5py
  • libhdf5-dev的
  • HDF5工具
  • HDF5-助手
  • libhdf5-7-DBG

使用pip,我试过:

pip install h5py
Run Code Online (Sandbox Code Playgroud)

这很难以解决对Cython的依赖,然后我手动安装.之后安装(显然)但我无法在任何地方找到文件hdf5.pc.

我在这里拔毛.有谁知道如何解决这个问题?

Rob*_*ham 3

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

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

h5py 同样与 C HDF5 结合

确实涉及很多软件。一步一步地努力,最终会变得更有意义(已经这样做了 15 年的人说……它会变得更容易!)

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

是的,需要配置和构建很多软件。pkg-config在这里可以提供很多帮助!当你看到时Package hdf5 was not found in the pkg-config search path,这意味着你应该调整你的PKG_CONFIG_DIR以指向包配置文件的位置。不幸的是,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
Run Code Online (Sandbox Code Playgroud)