pytorch项目报错:ImportError: no module named “cd“

这个问题是在运行pytorch项目时产生的,项目需要引入使用ninja编译的模块。
解决方法如下:

  1. 首先找到cd.so应该在的文件夹,以我的项目为例,地址是:/home/zxq/.cache/torch_extensions/cd/,这个目录下已经有了一个名为“build.ninja”的文件。去网上搜了下“build.ninja”文件一般要自己编写,用来编译.cpp和.cu文件,这里应该是自动生成的。打开“build.ninja”,发现里面有一行“ninja_required_version = 1.x”,这是要求的ninja版本,如果和你已经安装的ninja版本不同,那就需要重新安装。
  2. 我之前装的是1.8.2版本的,要重装1.3版本的,于是从github上下载了ninja1.3.0的安装包,解压后进入安装目录,安装命令如下:
编译ninja
$ ./bootstrap.py
编译结束后会生成一个名为“ninja”的文件,把这个文件复制到所在环境的系统目录,我是在虚拟环境里安装的ninja,所以是虚拟环境地址,如果是系统环境,复制地址应为"/usr/bin"
$ cp ninja /home/zxq/.conda/envs/pytorch-1.7/bin
检查ninja版本,看是否安装成功
$ ninja --version
  1. 手动使用ninja编译生成“cd.so”
进入build.ninja所在目录
$ cd /home/zxq/.cache/torch_extensions/cd
编译
$ ninja

编译结束后会发现“/home/zxq/.cache/torch_extensions/cd”目录下新生成了几个文件,包括“cd.so”。现在再运行项目,就不会报找不到“cd”模块的错了。
解决这类问题的关键在于要知道“x.so”对应的“build.ninja”位置,然后手动ninja编译,生成“x.so”。

你可能感兴趣的:(环境配置,pytorch,python)