解决方法
如果您在SO上发现此问题之前甚至不知道CDF文件格式是什么,这是一个易于遵循的指南.
1.下载最新版本的CDF C库:
您可以在link找到最新的稳定版本.使用wget获取源代码,然后解压缩.注意:以下将在当前文件夹中创建一个目录./如果要以不同的路径下载代码,请确保更改下面的代码.
wget -r -l1 -np -nd -nc http://cdaweb.gsfc.nasa.gov/pub/software/cdf/dist/latest-release/linux/ -A cdf*-dist-all.tar.gz tar xf cdf*-dist-all.tar.gz -C ./ cd cdf*dist
2.安装所有依赖项:
SpacePy和CDF图书馆有几个依赖关系(正如@Michal Dyzma所指出的那样).您可以使用conda或pip和apt安装它们.
pip install numpy scipy h5py matplotlib networkx apt install build-essential gfortran libncurses5-dev
3.编译C库:
您应该已经下载了一个README.install文件,其中包含有关此步骤的详细信息,而不是我提供的内容.两美分是您要检查哪些编译变量对于您的系统和需求是必需的/可选的.
make all.help
我将使用GNU C编译器构建Linux发行版.我对FORTRAN接口不感兴趣,我的操作系统支持可共享库.我想安装基于Curses的工具包程序,允许使用基于命令行的交互式CDF工具(这就是为什么我们在步骤2中安装了libncurses5-dev依赖项).结果这是最后的make命令:
make OS=linux ENV=gnu CURSES=yes FORTRAN=no UCOPTIONS=-O2 SHARED=yes -j4 all make install #no sudo
安装应该顺利运行并添加./bin,./include和./lib子目录中的所有文件.
4.设置环境变量:
在./bin中应该有一个名为definitions.B的文件,它会自动为您执行此操作,使用chmod x使其可执行,并将以下行添加到〜/ .bashrc(注意:1)我假设您安装了库在路径$HOME / Libraries /; 2)之后有一个空格.):
. $HOME/Libraries/cdf/cdf36_3-dist/bin/definitions.B
重要的提示:
上面的文件在第68行有一个错误,而不是附加到环境变量LD_LIBRARY_PATH,它会覆盖它.修复很简单,用以下内容替换第68行:
export LD_LIBRARY_PATH=$HOME/Libraries/cdf/cdf36_3-dist/lib:$LD_LIBRARY_PATH
如果由于某种原因,definitions.B不存在,只需添加以下内容:
export CDF_BASE=$HOME/Libraries/cdf/cdf36_3-dist export CDF_INC=$CDF_BASE/include export CDF_LIB=$CDF_BASE/lib export CDF_BIN=$CDF_BASE/bin export LD_LIBRARY_PATH=$CDF_BASE/lib:$LD_LIBRARY_PATH
你已经准备好了,去做好事:
假设您使用pip安装了spacepy,以下内容应该是开箱即用的:
from spacepy import pycdf cdf = pycdf.CDF('/path/to/file.cdf') print(cdf)