首先感叹,Firewall性能杠杠的!
再简单谈一谈我对pip和conda这两个指令(即两个program,在系统的/bin directory中能找到对应的二进制可执行文件,且被添加在了系统的$PATH(路径)中)的认识。
pip和conda这两个指令是在系统中安装python program(软件和工具包等)的工具。
这两个指令的执行,均是先从其对应的config文件中找到相应待安装program所在repo(python的program(安装文件等)可以理解为都是挂在往上某个文件夹中,这个文件加可被称为repo,即repository)的url,然后由此url下载安装文件,然后安装。三部曲。
pip指令可安装的程序都在Pypi(Python Package Index)这个大repo之中。pip每次要install东西时,就是来Pypi这个大”文件夹“中找到待安装的东西。而conda install则是到anaconda自己维护的大repo中找寻。因此,有可能有些program conda安装不了因为不在anaconda的repo中,而可以用pip安装(因为Pypi的规模远大于anaconda自己的repo)。
言归正传。
conda可用一条install指令一次性为我们一并安装PyTorch + torchvision + cuda,很良心。
不同的pytorch和cuda版本会对应不同的一行conda install指令,pytorch官网会给出不同pytorch和cuda搭配安装的不同指令。具体指令可以在pytorch官网(https://pytorch.org/)找到:
我是在Ubuntu16.04系统服务器上,想安装PyTorch1.1.0,无所谓Cuda和torchvision的版本。我从pytorch官网得到的安装指令是:(可见,PyTorch1.1.0必须要cuda9)
conda install pytorch torchvision cudatoolkit=9.0 -c pytorch
本以为直接run就好了,这时我大firewall站了出来。果断下载失败:
难不难受!!!
好在解决方案比较直接,墙内大佬们的智慧是无穷的。
solution分两步:
1. 给conda install指令添加下载地址的墙内镜像源,每次conda install时不去墙外下载而是在墙内对应半官方url下载:
国内的pip和conda的repo的镜像源(仅列出清华版,还有其他版本的镜像源):
pip:https://mirrors.tuna.tsinghua.edu.cn/help/pypi/
conda: https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/
具体实现方法是在conda install之前run如下指令:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes
2. 修改conda install那条指令,告诉conda不要去默认的墙外那个url去下载:
具体方法是将 conda install pytorch torchvision cudatoolkit=9.0 -c pytorch
尾部的-c pytorch这个option去掉,直接run:
conda install pytorch torchvision cudatoolkit=9.0
Viola!