conda关于频道和存储包pkgs的详解(副pytorch环境安装)

conda安装pytorch

使用官网提供的语句

conda install pytorch torchvision torchaudio cudatoolkit=11.6 -c pytorch -c conda-forge

-c 既是–channel,优先从pytorch 和conda-forge两个频道搜寻相应的包,但这两个频道是在哪里呢?

打开anaconda的总配置文件.condarc ,一般在C:\Users\xxx.condarc 下,没有就要执行

conda config

会自动在C:\Users\xxx 用户根目录创建.condarc,可以每一个环境都会有一个额外的.condarc在各自的文件夹中,目前来看作用不大,在虚拟环境中对config的操作也都是对总配置文件生效的
conda关于频道和存储包pkgs的详解(副pytorch环境安装)_第1张图片
打开总.condarc,可以看到

channels:
  - conda-forge
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
  - https://mirrors.aliyun.com/anaconda/pkgs/main
  - https://mirrors.aliyun.com/anaconda/pkgs/free
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
channel_priority: strict

在custom_channels里可以看到conda-forge和pytorch,他们都指向了清华源,因此最初的命令是从清华源去找数据。
channels就是目前的频道,也就是包存储库,我们从频道下载包,从高到低为频道的优先级,会从最高的开始找,找不到就找下一个频道,知道有满足条件的包为止,conda-forge优先级最高,因为他最好,defaults最低,因为网上资源都说defaults不好。
default_channels就是channels中的defaults,有三个包库。

更正: channels里面的信息要尽可能少,最好是只有一个defaults,不然每次下包的时候要更新本地的包index信息,以及查找要花费更多的时间,我们应当尽可能地指名他在那个频道,而不是每个频道都去找,修改condarc如下

channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

让channels里面尽可能少,同时删去

channel_priority: strict

strict会使环境的依赖判断非常严格(好像默认就是strict,那这一行删不删就无所谓了)

conda install mamba -c conda-forge

我们直接指定他在conda-forge频道,那么他就可以尽可能缩小范围地去寻找。

使用下面语句不添加两个频道直接下载

conda install pytorch torchvision torchaudio cudatoolkit=11.6 

会出现报错:

Problem: nothing provides requested torchaudio

意思是没有频道提供需要的包torchaudio,因为torchaudio只存在在pytorch频道中,我.condarc中channels没有关于pytorch的频道,所以找不到包导致安装失败。

使用mamba 代替conda下载

mamba install pytorch torchvision torchaudio cudatoolkit=11.6 -c pytorch -c conda-forge

会出错:

File not valid: file size doesn't match expectation

这是因为mamba 的审查机制严格,我们要从源下的包和要用到的包的size 不一致,无法安装。
解决方案1: 使用anaconda官方源

custom_channels:
conda-forge: https://conda.anaconda.org
pytorch: conda-forge: https://conda.anaconda.org

解决方案2(推荐): 全部改成阿里源

custom_channels:
  conda-forge: http://mirrors.aliyun.com/anaconda/cloud
  msys2: http://mirrors.aliyun.com/anaconda/cloud
  bioconda: http://mirrors.aliyun.com/anaconda/cloud
  menpo: http://mirrors.aliyun.com/anaconda/cloud
  pytorch: http://mirrors.aliyun.com/anaconda/cloud
  simpleitk: http://mirrors.aliyun.com/anaconda/cloud

conda包下载机制的解析

conda包下载主要涉及两个(种)文件夹,位于anaconda3主目录下的pkgs文件夹,和每一个环境地Lib文件夹下的site-packages文件夹。
pkgs文件夹存储了下载的包,每次下载的包都会存在这里,可以存储1个包的不同版本
site-packages文件夹,相当于每一个环境要用到的包,一个环境有一个site-packages,也说明了不同环境的是独立的。我要在环境a中下载一个包,首先看pkgs里有没有,没有则从网上下载到pkgs里,然后再复制一份相同的给a的site-packages文件夹,这样a也有了一个相同的环境。
这样做的好处是:
相同的包不同环境要用不用重复下载,直接复制一份到该环境即可,非常地方便,这也是为什么每次新建环境,克隆环境这么快,我直接复制粘贴就好了,克隆环境是对被克隆地文件夹中地所有文件都复制一份,不止复制了site-packages文件夹。
验证:
可以在pkgs和site-packages找到完全一样地的包,明显是复制来的。
同理克隆环境的话两个环境的文件夹大小是完全相同的。

conda关于频道和存储包pkgs的详解(副pytorch环境安装)_第2张图片conda关于频道和存储包pkgs的详解(副pytorch环境安装)_第3张图片

你可能感兴趣的:(pytorch,conda,深度学习)