我想运行一个使用模块 netCDF4 的 Python 脚本。因此我遵循了以下说明:http://netcdf4-python.googlecode.com/svn/trunk/docs/netCDF4-module.html
出于某种原因,它无法与我安装的 HDF5 版本兼容。我在主目录中安装了最新版本 (1.8.10)。但 Python 出现了这个错误:
$ import netCDF4
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
/user/timo/<ipython-input-2-f731da2de255> in <module>()
----> 1 import netCDF4
/user/timo/netCDF4.pyx in init netCDF4 (netCDF4.c:46771)()
ImportError: netCDF4 module must be linked against HDF5 version 1.8.4-patch1 or higher, got 1.8.10
因此,我从主目录中(手动)删除了 1.8.10 版本的文件夹,并安装了 1.8.4-patch1。(也许“.10”版本不兼容?)
但这并不能解决问题。当我运行 Python 脚本时,错误仍然相同。这就是为什么我认为一定有我没有删除的“.10”版本,所以我搜索了“hdf5”:
4> sudo find / -name 'hdf5'
/user/timo/hdf5
/user/timo/Downloads/hdf5-1.8.4-patch1/windows/proj/hdf5
(在 '/user/timo/hdf5' 中安装的是 '1.8.4-patch1' 版本)
我猜想,在我完全删除“1.8.10”版本后,我的 Python 脚本将会运行。有人能帮我吗?
(我使用的是“Ubuntu 12.04.1 LTS”和“Python2.7”)
答案1
我当然也不是专家,但看看您链接的 netCDF4 页面,您可能必须在安装旧版 HDF5 后重建它。
不过,我想知道如果您使用“必需”下列出的标志构建 netCDF4,为什么最新版本不起作用。
说什么export
?您的 HDF5 变量设置正确吗?
答案2
我将通过运行删除 netCDF4 和 HDF5
apt-get remove --purge python-netcdf hdf5
这也将使相关软件包消失。
这可能更安全:
dpkg -r python-netcdf hdf5
apt-get autoremove
然后重新安装 netCDF4 和依赖项,最常用摘自 Ubuntu 14 LTS 的一篇文章。
apt-get install git git-doc git-el git-email git-gui gitk gitweb git-arch git-bzr git-cvs git-mediawiki git-svn python python-dev python-pip libatlas-base-dev gcc gfortran g++ cython
这有助于避免以后出现 scipy python 模块错误[来自 www.scipy.org ]
apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
(重新)安装 zlib 库:
ftp.unidata.ucar.edu/pub/netcdf/netcdf-4/zlib-1.2.8.tar.gz
cd /home/user/Downloads
tar xvzf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make
make install
(重新)安装 curl:
apt-get install curl
(重新)安装HDF5:
ftp.unidata.ucar.edu/pub/netcdf/netcdf-4/hdf5-1.8.9.tar.gz
cd /home/user/Downloads
tar xvzf hdf5-1.8.9.tar.gz
cd hdf5-1.8.9
./configure --prefix=/usr/local --enable-shared --enable-hl
make -j 2
make install
(重新)安装 netCDF4:
ftp.unidata.ucar.edu/pub/netcdf/netcdf-4.3.2.tar.gz
cd /home/user/Downloads
tar xvzf netcdf-4.3.2.tar.gz
cd netcdf-4.3.2
LDFLAGS=-L/usr/local/lib CPPFLAGS=-I/usr/local/include ./configure --enable-netcdf-4 --enable-dap --enable-shared --prefix=/usr/local
make -j 2
make install
make check
最后是 netCDF4 模块
pip install netcdf4
现在 python“import netCDF4”应该可以工作了