Anaconda 学习笔记
目录
介绍
- Anaconda(官网 https://www.anaconda.com/ )是软件包/环境管理工具 Conda 的数据科学版本,自带的 base 环境提供了大量数据科学使用的包
- 当然 base 环境有点大,通常都是创建新的环境来用
安装&运行
- 官网下载安装,可以打开 Anaconda Prompt 命令行,也可以用 Anaconda Navigator 可视化操作
命令
- 输入
conda
,可以看到很多命令 - 官方指南 https://conda.io/projects/conda/en/latest/user-guide/index.html
- 官方提供了常用命令合集 https://conda.io/projects/conda/en/latest/user-guide/cheatsheet.html
全局相关
- 帮助
conda -h
- 版本
conda -V
- 配置
conda config
conda config --show
查看所有配置conda config --show config-name
查看指定的配置,只有 config-name 是有效的配置名称时才会正确输出。如查看 default_channelsconda config --show default_channels
conda config --set config-name config-value
设置指定配置conda config --add config-name config-value
添加指定配置,这也是最常见的添加配置的写法
- 信息
conda info
conda info -e
查看创建的环境列表
环境相关
- 创建环境
conda create
conda create -n env-name packages
创建名为 env-name 的环境,并安装若干个空格分隔的包。通常创建环境即写为conda create -n env-name python=3.9 numpy
,指定版本用=而不是==
- 进入环境
conda activate env-name
- 退出环境
conda deactivate
包相关
- 安装包
conda install
conda install packages
在当前环境下安装若干个空格分隔的包,指定版本用=-c channel-name
指定使用的 channel,关于 channel 见下文配置
- 清理无用包
conda clean
- 查看安装的包
conda list
- 删除包
conda remove
,别名conda uninstall
conda remove packages
递归删除指定包和依赖于指定包的所有包--all
删除所有包,也就是删除环境
- 查找包
conda search
conda search package-name
查找指定包,*
为通配符。部分包在 pip 和 conda 里的名称不一样,如 torch 和 opencv-python,因此可以先conda search *torch*
找到对应的包
PyCharm 中使用 Conda 环境
- 配置见
- 配置 Interpreter 时,选择 Conda 环境的 Existing environment,PyCharm2018 在检测 Conda 环境时效果不好,只检测 Conda 环境下的 Python 而不检测 Conda 本身,导致 PyCharm 里能找到但无法加载 Conda 安装的 cudatoolkit,之后的版本添加了 conda.exe 路径配置,已经不会出现该问题
配置
- 跟 Maven 等工具一样,有多个层级的配置文件,通常用到的就是用户级配置
~/.condarc
文件,也就是C:/Users/用户名/.condarc
- 第一次使用可以首先
conda config
让其生成这个配置文件
修改源
- Conda 下载软件包的渠道叫做 Channel,由于各种原因,在国内使用 Anaconda 自带的 Channel 下载会很慢,因此我们需要更换成国内的 Channel,如清华、中科大等都有提供
- 网上各种博客写的乱七八糟,很多改源只改一半,改了也不知道什么意思,容易出现比如找不到 Pytorch 这样的问题,所以一定要参考官方内容
- 清华 Anaconda 镜像配置:https://mirror.tuna.tsinghua.edu.cn/help/anaconda/ 将以下内容写入 .condarc 文件中即可使用清华提供的 Channel
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 simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
配置文件详解
- 为了理解上面的配置内容,需要查看官方文档 https://conda.io/projects/conda/en/latest/configuration.html
- Conda 的 Channel分为 base-url + channel-name 两部分,以下面为例
// 规定 channel,按照顺序依次搜索。如果是 url,则规定的就是 base-url + channel-name 这两部分;如果是 defaults,则将 Anaconda 默认源引入,如果是其他内容,则为 channel-name channels: - defaults // 设为 true,则在查找时会显示每个包对应以上 channels 配置中的哪个 channel(url、defaults 或者 channel-name) show_channel_urls: true // 当仅有 channel-name 时,将 channel_alias 作为 base-url,Anaconda 默认为官方的 https://conda.anaconda.org channel_alias: https://conda.anaconda.org // 如果 channels 中指定 defaults,设置 default_channels 可以覆盖官方自带的 channels default_channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main // 指定每个 channel-name 对应的 channel_alias(base-url),覆盖全局的 channel_alias custom_channels: conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
- Anaconda 无任何配置时输出其自带的配置
可以看到,当不加指定的 conda install pytorch 时,Anaconda 从指定的 default_channels 三个 Channel 去找;如果指定channel_alias: https://conda.anaconda.org channels: - defaults custom_channels: pkgs/main: https://repo.anaconda.com pkgs/r: https://repo.anaconda.com pkgs/msys2: https://repo.anaconda.com pkgs/pro: https://repo.anaconda.com default_channels: - https://repo.anaconda.com/pkgs/main - https://repo.anaconda.com/pkgs/r - https://repo.anaconda.com/pkgs/msys2
-c pkgs/main
,拼接上 custom_channels 中的内容,就去https://repo.anaconda.com/pkgs/main
找;如果指定-c pytorch
,拼接上 channel_alias,就去https://conda.anaconda.org/pytorch
找,只有后者才有 pytorch 的包,因此在 Pytorch 官网上指定了-c pytorch
- 那么回到清华镜像源,就很容易理解网上常见的缺斤少两的清华镜像源的问题所在了