解决 from spacepy import pycdf 时报错:Exception: Cannot load CDF C library; checked . Try ‘os.environ[“CDF_LIB”] = library_directory’ before import.
在使用mmpose对h36m进行数据预处理时遇到上面报错,pip install不了cdf lib,需要手动下载。去nasa cdf官网https://cdf.gsfc.nasa.gov/下载。直接点进去下载最新版本即可,我是V3.9.0, 点进去有不同系统可选,我是linux,点进去有一大堆可选,直接下载-dist-all.tar.gz即可。
解压后使用less命令查看README.install文件,里面是安装教程。大致就三步:
- make OS=linux ENV=gnu all (根据自己系统和环境选择)
- make test
- make xxx/xxx/xxx all (路径是安装的cdf_lib的路径,像我就直接在当前目录下新建了一个文件夹。第一次我没填写路径,不知道它给安到哪去了,找不到)
安装好的新文件夹下的lib应该包含cdf库文件 libcdf.so
这时应该配置环境变量,然鹅我用的学校服务器,没有权限(就是我不会),因此只在当前脚本设置(在导包之前):
cdf_lib_path = "新文件夹路径/lib"
os.environ["CDF_LIB"] = cdf_lib_path
from spacepy import pycdf
另附:
运行mmpose的preprocess_h36m.py遇到了没有cameras.pkl文件的报错。
原因是generate_camera_file()函数中的out_file = join(self.processed_dir, 'annotation_body3d', 'cameras.pkl')
不能自动生成路径,将这行改成:
out_file_path = os.path.join(self.processed_dir, 'annotation_body3d')
os.makedirs(out_file_path, exist_ok=True)
out_file = os.path.join(out_file_path,'cameras.pkl')