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、然后绝大部分问题都可以解决了!