conda 使用指南

conda commands ™

注意! 尖括号“<>”内的参数为必给参数,方括号“[]”内的参数为可选参数。


Changelog

data: 2021-04-25

  1. Added

    • 添加“conda 环境回滚”和“移动/共享 conda 环境”的命令
  2. Fixed

    • 修复了原本残缺的卸载方案

    • 依照 markdownlint 规则修正了文中的 Markdown 语法错误

date: 2020-02-23

  1. Added

    • 添加“降级/重新安装特定版本库”的说明
  2. Fixed

    • 使代码更易复制

date: 2020-01-07

  1. Added

    • 添加“如何更换conda和pip镜像源”的说明

1. 安装

anaconda过于臃肿,绝大多数默认包并不会被使用,强烈推荐使用miniconda

推荐下载地址:

1.1. Linux

1
2
3
./<file-name>.sh
# yes+回车
# 重启终端

如果选择了conda init初始化,可通过以下命令取消默认激活环境 base

1
conda config --set auto_activate_base false

1.2. Windows

直接双击exe文件,然后根据安装向导进行安装

2. 卸载

https://docs.anaconda.com/anaconda/install/uninstall/

2.1. Option A. 简单卸载

  • Linux

    1
    2
    # 删除 conda 安装目录,例如
    rm -rf ~/miniconda3
  • Windows

    1. 使用 Windows 资源管理器删除安装根目录中的 envs 和 pkgs 文件夹

    2. 计算机控制面板->程序与应用->卸载

2.2. Option B. 使用 Anaconda-Clean 完全卸载

必须先运行 Anaconda-Clean,然后才能使用 Option A 简单删除

  1. 安装 anaconda-clean

    1
    conda install anaconda-clean
  2. 运行 anaconda-clean 删除所有与 Anaconda 相关的文件和目录

    1
    2
    3
    4
    ## 需要确认
    anaconda-clean
    ## 无需确认
    anaconda-clean --yes
  3. 使用Anaconda-Clean之后,请按照上述 Option A 中的说明卸载 Anaconda

2.3. 最后,清理 .bash_profile/.zshrc 中有关 conda 的设置

3. 更换镜像源

以清华镜像站为例,说明更换镜像源的方法

3.1 更换conda镜像源

各系统都可以通过修改用户目录下的 .condarc 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
channels:
- defaults
ssl_verify: true
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
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
  • Windows下文件路径:%HOMEPATH%\.condarc

    若目录下无该文件,可先执行 conda config 生成该文件之后再修改。

  • Linux下文件路径:~/.condarc

3.2 更换pip镜像源

1
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

4. 升级

4.1 方法一:切换到相应环境

首先切换到相应环境

1
conda activate <envernment>

进行升级(conda 与其他包的升级是独立的)

1
2
3
4
5
# 升级 conda
conda update conda

# 升级<envernment>环境下所有包
conda update --all

4.2 方法二:通过参数-n指定环境

1
2
# 例如,更新 base 环境下 python
conda update -n base python

5. 降级 (安装指定版本)

1
conda install --force-reinstall tensorflow=1

6. conda 基本命令

6.1 环境的操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 显示所有的虚拟环境
conda env list
conda info --envs

# 创建名为 env-name 的 python 虚拟环境并指定 python 版本为 3.7
conda create -n <env-name> [python[=3.7]]
# 从旧环境中克隆
conda create -n newname --clone oldname
# 激活 env-name 环境
conda activate <env-name>
# 回到默认环境
conda deactivate

# 删除env-name虚拟环境/需取消激活此环境
conda remove -n <env-name> --all

6.2 环境内部包的操作

1
2
3
4
5
6
7
8
9
10
# 查看已经安装的包
conda list
# 指定查看env-name虚拟环境下安装的package
conda list -n <env-name>
# 安装 pack-name
conda install <pack-name>
# 更新 pack-name
conda update <pack-name>
# 卸载 pack-name
conda uninstall <pack-name>

6.3 环境的重命名

conda是没有重命名环境的功能, 要实现这个基本需求, 只能通过蠢蠢的克隆+删除来实现。

1
2
3
4
# 克隆环境
conda create -n newname --clone oldname
# 删除旧环境
conda remove -n oldname --all

7. conda 高级命令

7.1 环境回滚/环境重置/修订历史

  1. 激活相应环境

    1
    conda activate <env-name>
  2. 列出环境 env-name 修订/修改历史

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # 修订版本号(REVISION)为括号中 rev 后面的阿拉伯数字,“0”表示初始版本。
    ~]$ conda list --revisions

    输出实例:

    2021-01-01 00:00:00 (rev **0**)
    +_libgcc_mutex-0.1
    +ca-certificates-2020.1.1
    +certifi-2020.4.5.1
    +cffi-1.14.0
    +chardet-3.0.4
    +conda-4.8.3
  3. 恢复到指定版本

    1
    2
    # 将修订版本号(REVISION)替换为所需版本号,“0”表示初始化当前环境
    conda install --revision REVISION

7.2 移动 conda 环境

https://www.anaconda.com/blog/moving-conda-environments

https://docs.conda.io/projects/conda/en/latest/commands/create.html

https://docs.conda.io/projects/conda/en/latest/commands/list.html

https://conda.github.io/conda-pack/

指定需要操作的环境环境

  • a. 激活环境然后操作

    1
    conda activate <env-name>
  • b. 或通过 -n 指定环境,例如:conda list -n <env-name>

7.2.1. Option A. 列出环境中所有已安装的包及相应版本,使用 YAML 格式(推荐)

特点:平台&操作系统无关、不指定镜像源、仅导出包列表/恢复时需要联网、包含 pip 包、YAML 格式化

  • 导出:

    1
    conda env export > environment.yml
  • 恢复:

    1
    conda env create -f environment.yml

7.2.2. Option B. 列出环境中所有已安装的包及相应版本,并导出至文件

特点:平台&操作系统无关、不指定镜像源、仅导出包列表/恢复时需要联网、包含 pip 包

  • 导出:

    1
    conda list --export > package-list.txt
  • 恢复:

    1
    conda create -n <env-name> --file <file>

7.2.3. Option C. 将环境打包存档

特点:平台&操作系统相关、指定镜像源、二进制文件打包/恢复时无需联网、打包时需要额外工具

  • 在 root/base 环境下安装 conda-pack

    • conda-forge:

      1
      conda install -c conda-forge conda-pack
    • PyPI:

      1
      pip install conda-pack
  • 打包

    1
    2
    3
    4
    5
    6
    # 将环境 my_env 打包至 my_env.tar.gz
    conda pack -n my_env
    # 将环境 my_env 打包至 out_name.tar.gz
    conda pack -n my_env -o out_name.tar.gz
    # 或者用路径指定需要打包的环境
    conda pack -p /explicit/path/to/my_env
  • 安装

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    # 将环境解包至`my_env`目录
    $ mkdir -p my_env
    $ tar -xzf my_env.tar.gz -C my_env

    # 无需激活/修复前缀(prefixes)即可使用 python,大多数库将正常工作
    # 但需要清理前缀的将会失败
    # ps. 前缀指 conda 环境的绝对路径等
    # 清理前缀大概指整顿 conda 环境路径
    $ ./my_env/bin/python

    # 激活环境,这会暂时将`my_env/bin`添加至环境变量`$PATH`中
    $ source my_env/bin/activate

    # 在环境中运行 Python
    (my_env) $ python

    # 在活动环境中清理前缀
    # 注意,此命令也可以在不激活环境的情况下运行
    # 只要机器上已经安装了某些版本的 Python
    (my_env) $ conda-unpack

    # 此时,环境就像您直接使用conda在此处安装该环境一样,
    # 所有脚本都可以正常工作。
    (my_env) $ ipython --version

    # 停用环境以将其从路径中删除
    (my_env) $ source my_env/bin/deactivate

7.2.4. Option D. 以 URL 的形式将已安装 conda 包列表导出至文件

特点:平台&操作系统相关、指定镜像源、仅导出包列表/恢复时需要联网、仅包含 conda 包/不包含 pip 包

  • 导出:

    1
    conda list --explicit > package-list-explicit-file-for-create.txt
  • 恢复:

    1
    conda create -n <env-name> --file <file>

8. 清理

1
2
3
4
5
6
# 删除没用的包
conda clean -p
# 删除tar包
conda clean -t
# 删除所有的安装包及cache/慎用
conda clean -y -all