Conda 常用命令

管理Conda

查看Conda版本

1
conda --version

查看Conda环境配置

1
conda config --show

设置镜像

1
2
3
4
5
6
7
8
9
10
# 设置清华镜像
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/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
# 设置bioconda
conda config --add channels bioconda
conda config --add channels conda-forge
# 设置搜索时显示通道地址
conda config --set show_channel_urls yes

更新Conda

1
conda update conda

更新Anaconda

1
conda update anaconda

conda update conda的区别是:conda update conda 主要用于更新 Conda 包管理器本身,而 conda update anaconda 则用于更新整个 Anaconda 发行版,包括 Conda 包管理器和默认软件包。

查询某个命令的帮助

1
conda create --help

管理环境

创建虚拟环境

1
conda create -n env_name python=3.8
  • 表示创建python版本为3.8、名字为env_name的虚拟环境。创建后,env_name文件可以在Anaconda安装目录envs文件下找到。
  • 在不指定python版本时,自动创建基于最新python版本的虚拟环境.

创建虚拟环境的同时安装必要的包

1
conda create -n env_name numpy matplotlib python=3.8
  • 不建议这样做,简化每一条命令的任务在绝大多数时候都是明智的(一个例外是需要反复执行的脚本)。

曾在安装包时遇到版本问题,通过在创建环境时安装指定版本的包解决。

查看虚拟环境列表

1
2
3
conda env list
conda info -e
conda info --envs
  • 三者任选其一
  • 带 * 的表示当前活动环境

激活虚拟环境

1
conda activate env_name
  • 可以使用python --version查看python版本是否为所需版本

退出虚拟环境

1
2
conda activate    # 默认回到缺省环境base
conda deactivate # 退出当前环境回到base

删除虚拟环境

1
conda remove --name env_name --all
  • 该命令将指定虚拟环境及其中所安装的包都删除
1
conda remove --name env_name package_name
  • 该命令只删除虚拟环境中的某个或某些包

导出虚拟环境

1
2
3
4
# 获取环境中的所有配置
conda env export --name env_name > env_name.yml
# 重新还原环境
conda env create -f env_name.yml
  • 方便在需要时恢复环境,或提供给别人用于创建完全相同的环境

管理包

查看包列表

1
conda list

查看Anaconda仓库中是否有需要包

1
conda search package_name

查看是否安装某个包

1
2
conda list package_name
conda list package_name* # *表示支持模糊查找

安装包

1
2
3
conda install package_name
conda install package_name=0.20.3 # 指定版本
conda install package_name -c conda_forge # 指定通道

更新包

1
conda update numpy

卸载包

1
2
3
4
5
# 依赖于这个包的所有其它包也同时卸载
conda uninstall package_name
# 不想删除依赖其当前要删除的包的其他包
# 不建议会导致依赖其的包不可用,即使重新安装可能导致版本不兼容
conda uninstall package_name --force

清理缓存

1
2
3
conda clean -p      # 删除没有用的包 --packages
conda clean -t # 删除tar打包 --tarballs
conda clean -y -all # 删除所有的安装包及cache(索引缓存、锁定文件、未使用过的包和tar包)
  • 关于清除命令的更详细的说明,可以执行以命令conda clean -h进行查询

管理python

python版本变更

1
2
conda install python=3.5
python --version # 查看版本

python更新到最新版

1
conda update python

Conda配置文件

.condarc文件

  • conda的配置文件为".condarc",该文件在安装时不是缺省存在的。但是第一次运行conda config命令时它就被自动创建了。".condarc"配置文件遵循简单的YAML语法。

  • 执行conda info,会有信息显示如下所示:

通道管理

  • 追加conda-forge channel:

    1
    conda config --add channels conda-forge
  • 移除conda-forge channel:

    1
    conda config --remove channels conda-forge
  • 查询当前配置中包含哪些channels:

    1
    conda config --get channels

conda install 和 pip install

区别

  • conda可以管理非python包,pip只能管理python包。
  • conda自己可以用来创建环境,pip不能,需要依赖virtualenv之类的。
  • conda安装的包是编译好的二进制文件,安装包文件过程中会自动安装依赖包;pip安装的包是wheel或源码,装过程中不会去支持python语言之外的依赖项。
  • conda安装的包会统一下载到一个目录文件中,当环境B需要下载的包,之前其他环境安装过,就只需要把之间下载的文件复制到环境B中,下载一次多次安装。pip是直接下载到对应环境中。
  • conda只能在conda管理的环境中使用,例如比如conda所创建的虚环境中使用。pip可以在任何环境中使用,在conda创建的环境 中使用pip命令,需要先安装pip(conda install pip ),然后可以 环境A 中使用pip 。conda 安装的包,pip可以卸载,但不能卸载依赖包,pip安装的包,只能用pip卸载。

不建议混用。混用容易导致库的依赖关系出现混乱,甚至导致环境崩溃,安装不了新的包,无法进行conda update之类的。

由于conda的库不如pip的库丰富,所以有时候迫不得已要使用pip安装。切记,只有在conda install搞不定时才使用pip intall。

安装地址

  • conda install xxx:安装的库会放在目录下,好处是当在某个环境下已经下载好了某个库,再在另一个环境中还需要这个库时,就可以直接从pkgs目录下将该库复制至新环境而不用重复下载。
  • pip install xxx
    • 一种情况就是当前conda环境的python是conda安装的,和系统的不一样,那么会被安装到文件夹中;
    • 如果当前conda环境用的是系统的python,那么通常会被安装到文件夹中 。

判断安装方式

  • 执行 conda list ,用pip安装的包显示的build项为pypi。

参考:Anaconda conda常用命令:从入门到精通