1、在 Ubuntu18.04 系统,用 pip 安装本地的一个 C++ 库

pip install pointlib/.

结果报错

OSError: CUDA_HOME environment variable is not set. Please set it to your CUDA install root.

上网搜索之后,按照教程“报错 OSError: CUDA_HOME environment variable is not set. Please set it to your CUDA install root.”去做,


2、结果发现找不到 CUDA_HOME,/usr/local/ 路径下没有 cuda 文件夹,于是继续上网搜索,发现教程“python - 获取 CUDA_HOME 环境路径 PYTORCH

import os
print(os.environ.get('CUDA_PATH'))

但是返回的是

None

3、于是决定重新安装 cuda,为了避免破坏已有的环境,决定在 anaconda 里创建一个虚拟环境,在虚拟环境里重新安装 pytorch、Opencv-pyython、cuda 等。(Ubuntu18.04+Anaconda3创建虚拟环境并安装pytorch+opencv+tensorflow)


4、创建虚拟环境后,进入 pytorch 官网,直接复制代码安装 pytorch,但是网速太慢,导致下载安装经常失败,于是决定换清华源,换源后报错

HTTP 000 CONNECTION FAILED for url <https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/noarch/repodata.json>

于是又删除清华源,换回默认源,再按照教程“CondaHTTPError:HTTP 000 CONNECTION FAILED for url<https://mirrors.tuna.tsinghua.edu.cn/anaconda***”进行设置


5、换源后依然很慢,决定按教程“pytorch下载太慢的解决办法”进行离线下载和安装。pytorch 顺利离线下载和安装后,测试是否安装成功

import torch
torch.cuda.is_available()

显示

false

离线安装失败


6、最后决定进入官网,复制代码,在虚拟环境下重新进行在线安装,网速虽然非常慢,但一直没中断,终于安装成功,虚拟环境中输入代码进行测试

import torch
torch.cuda.is_available()

显示

true

但是输入

import os
print(os.environ.get('CUDA_PATH'))

依然返回的是

None

7、于是在创建的虚拟环境中输入命令,查看 cuda 版本

nvcc -V

报错

Command 'nvcc' not found, but can be installed with:
sudo apt install nvidia-cuda-toolkit

8、按照提示的错误信息安装 nvcc,在虚拟环境输入

sudo apt install nvidia-cuda-toolkit

顺利安装成功,输入

nvcc -V

显示

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Nov__3_21:07:56_CDT_2017
Cuda compilation tools, release 9.1, V9.1.85

但是输入

import os
print(os.environ.get('CUDA_PATH'))

依然返回的是

None

9、于是决定安装 cuda,cuda 版本要与之前安装的 pytorch 里面自带的 cuda 版本保持一致。按照教程“Ubuntu 18.04上安装cuda”进行安装。如果用 wget 下载过慢的话,可以复制链接然后到浏览器里下载。安装过程中会有一些选项,可以参考“Installation failed. See log at /var/log/cuda-installer.log for details.”里面的注释进行选择。


10、安装之后,按照“Ubuntu 18.04上安装cuda”检测是否安装成功,报错

cudaGetDeviceCount returned 999 -> unknown error 
Result = FAIL

按照教程“CUDA issue:cudaGetDeviceCount()错误”,把 cuda 卸载重装,cuda 卸载命令:

sudo /usr/local/cuda/bin/cuda-uninstaller

卸载不干净时,使用命令强制卸载:

sudo rm -rf /usr/local/cuda-10.2
sudo rm -rf /usr/local/cuda

这里的10.2是根据自己的版本号来确定的。
然后在 .bashrc 里注释掉环境变量,保存、更新之后再重新安装。


11、重新安装 cuda 并测试通过之后,接着重新尝试第一步,用 pip 安装本地的一个 C++ 库,仍然报错,报的错误与第一次不一样,非常长,按照“报错Command ‘[‘ninja‘,‘-v‘]‘ returned non-zero exit status 1;RuntimeError: Error compiling objects for”和“ ImportError: roi_align_cuda #22 ”的启发,应该是 pytorch 的版本过高的问题。决定新建一个虚拟环境,完全按照我要复原的源码的 github 上的配置安装低版本的 pytorch,低版本的 pytorch 安装可以在“Installing previous versions of PyTorch”上找到。“https://github.com/pytorch/vision”可以查询 pytorch、torchvision、python 这三者之间的版本对应关系。


12、重新安装 pytorch 后不报原先那个错了,但是报另一个错:

fatal error: cublas_v2.h: 没有那个文件或目录

按照教程“fatal error: cublas_v2.h”解决了这个错误。
然后又报另一个错:

unable to execute ':/usr/local/cuda-10.2/bin/nvcc': No such file or directory

又按照教程“No such file or directory: ‘:/usr/local/cuda-10.1:/usr/local/cuda-10.1/bin/nvcc‘:”解决了这个错误。


13、最后再次重试第一步,用 pip 安装本地的一个 C++ 库,终于成功!!!

(acmnet) clzx@clzx:/media/clzx/Seagate Expansion Drive/state_of_the_art/2-ACMNet-master$ pip install pointlib/.
Processing ./pointlib
  Preparing metadata (setup.py) ... done
Building wheels for collected packages: pointlib
  Building wheel for pointlib (setup.py) ... done
  Created wheel for pointlib: filename=pointlib-0.0.0-cp36-cp36m-linux_x86_64.whl size=2691190 sha256=0ebf4fd468f812d1a4ee6a47941a8560f8e107db95b1670fcc6031625a881a82
  Stored in directory: /tmp/pip-ephem-wheel-cache-rlc2qvpu/wheels/7d/e7/c1/2bf208a5507ceafa10b4f21898fa36583b26ec67068a709d71
Successfully built pointlib
Installing collected packages: pointlib
Successfully installed pointlib-0.0.0

总结:

1、先安装源代码对应的 GitHub 上指定版本的 cuda。
2、新建虚拟环境,安装 GitHub 上指定版本的 python、pytorch。
3、然后绝大部分问题都可以解决了!


Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐