我的cuda版本为10.1,按照常规教程到Pytorch官网选择好版本之后,使用conda命令安装:
conda install pytorch torchvision cudatoolkit=10.1 -c pytorch
但是遇到两个问题:
1. Pytorch的下载安装需要访问anaconda文件夹,但anaconda文件夹默认加锁,所以导致Pytorch安装失败,报错信息如下:
...
PermissionError: [Errno 13] Permission denied: '/home/yhx/anaconda3/.condatmp'
...
An unexpected error has occurred. Conda has prepared the above report.
If submitted, this report will be used by core maintainers to improve
future releases of conda.
解决方法是将anaconda的权限加入我的用户及其用户组中:
sudo chown -R yhx:yhx /home/yhx/anaconda3/
更改权限后就可以成功安装:
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
(base) yhx@yhx:~/app$
2. 安装完Pytorch后打开新的终端,发现报错ModuleNotFoundError: No module named 'conda',信息如下:
Traceback (most recent call last):
File "/home/yhx/anaconda3/bin/conda", line 12, in <module>
from conda.cli import main
ModuleNotFoundError: No module named 'conda'
而且python版本也莫名其妙从3.7变为了3.6,我猜测Pytorch将anaconda的一些默认配置修改。
我尝试卸载很多次anaconda,都没有解决。后来的解决方式是:离线安装Pytorch。
方法如下:
① 到清华镜像中按自己所需版本下载Pytorch和Torchvision:
https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/
② 在离线包路径下打开终端,分两步安装:
yhx@yhx:~/app$ conda install pytorch-1.4.0-py3.7_cuda10.1.243_cudnn7.6.3_0.tar.bz2
Downloading and Extracting Packages
######################################################################## | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
(base) yhx@yhx:~/app$ conda install torchvision-0.5.0-py37_cu101.tar.bz2
Downloading and Extracting Packages
######################################################################## | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
3. 测试anaconda是否健全:
yhx@yhx:~$ conda -V
conda 4.5.11
yhx@yhx:~$ which python
/home/yhx/conda/bin/python
yhx@yhx:~$ which ipython
/home/yhx/conda/bin/ipython
4. 测试pytorch是否顺利安装:
yhx@yhx:~$ python
Python 3.7.0 (default, Jun 28 2018, 13:15:42)
[GCC 7.2.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> print(torch.cuda.is_available())
True
>>>
5. 题外话:
废了九牛二虎之力安装Pytorch和Tensorflow,但在后续使用过程中,使用conda命令安装了一个VS coda的python插件,导致python版本莫名其妙升级为3.8,进而报错ModuleNotFoundError: No module named 'conda',Pytorch和Tensorflow又都无法使用,无奈又全部重装了一遍。
后来那个插件我没使用conda方式安装,而是使用pip安装,没在出错。
所以个人建议,慎用conda命令,能用pip就用pip。