conda常用命令
前言
Conda是一个强大的包和环境管理工具。
本文根据conda-getting-started编译而成,喜欢阅读英文的伙伴们可以直接去读英文说明。
conda命令的一些选项开关有两种指定方式,一种两个连接号“—”后跟选项名全程,一种是一个连接号“-”后跟简称。比如说”-n”和”—name”是等价的。但是要注意有些例外,比如说,“—version”对应的是“-V”(大写的V而不是小写的v)。
管理conda本身
管理conda版本
1 | conda --version |
查看conda的配置
1 | conda config --show # 查看channel等 |

管理channel
(设置国内镜像的话可以使安装更快捷一些。)
- 从最高到最低通道优先级对包进行排序。
- 将捆绑的包—-具有相同通道优先级的包—-从最高到排序到最低版本号。
顺序是: channelA::numpy-1.13_1 > channelA::numpy-1.12.1_1 > channelA::numpy-1.12.1_0 > channelB::numpy-1.13_11
2
3
4
5
6
7
8
9
10
11
12
13设置清华镜像
add是添加顶部频道,append是将通道添加到频道列表底部,最低优先级
conda config --add channels new_channel
conda config --append channels new_channel
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
官方的channel:
在国内使用 conda 镜像的时候最好手动删除一下~/.condarc 里的 defaults 频道。你可以直接打开~/.condarc 手动删除掉defaults这一行或者运行下面这句命令即可。1
2sed '/defaults/d' ~/.condarc # linux
windows中直接打开文件删除就行
conda在没有指定频道的前提下是从~/.condarc文件里从上往下一个频道一个频道去找软件的。所以如果把常用的频道放在最上面有利于更快地找到所需要安装的软件。.condarc文件内容如下:1
2
3
4
5
6
7
8
9channels:
- conda-forge
- bioconda
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- defaults # 可删除提高速度
show_channel_urls: true
conda-forge上的安装包比default的更加新、更加全,请优先使用。
移除channel1
conda config --remove channels conda-forge
查询当前配置中包含哪些channels1
conda config --get channels

更新版本
1 | conda update conda |
更新Anaconda整体
将整个Anaconda都更新到确保稳定性和兼容性的最新版本1
conda update Anaconda
有时会出现”custom”字样。这意味着你使用了定制的Anaconda发行版,而非官方发布的版本。(一般没事)
查看某个命令的帮助
1 | conda create --help |
管理环境
Conda可以创建相互隔离的独立环境,这些环境被称之为虚拟环境。
(Virtual Environment),这些环境各自包含属于自己的文件、包以及他们的依存关系,并且不会相互干扰。
Anaconda有一个缺省的名为base的环境。但是不建议把程序放在base环境中,应该创建不同的虚拟环境分别管理不同的开发项目。
创建虚拟环境
1 | conda create -n env_name |
这表示创建python版本为3.8、名字为env_name的虚拟环境。
创建后,env_name文件可以在Anaconda安装目录envs(不止一个,conda info查看)文件下找到。在不指定python版本时,自动创建基于最新python版本的虚拟环境.
创建虚拟环境的同时安装必要的包1
conda create -n env_name numpy matplotlib scipy=0.17.3 python=3.8

从 environment.yml 文件创建环境1
conda env create -f environment.yml
文件的第一行设置新环境的名字。有关详细信息,请参阅手动创建环境文件。
查看有哪些虚拟环境
1 | conda env list |


星号的位置表示我现在在base环境下工作。命令行的最左端括号中也是ENV_NAME的名称。
激活虚拟环境
想要进入某个已创建好的环境下,需要先将其激活,命令是1
conda activate env_name
此时使用python —version可以检查当前python版本是否为所想要的(即虚拟环境的python版本)。

退出虚拟环境
1 | conda activate |
以上两条命令只中任一条都会让你回到base environment,它们从不同的角度出发到达了同一个目的地。可以这样理解,activate的缺省值是base,deactivate的缺省值是当前环境,因此它们最终的结果都是回到base
克隆环境
1 | conda create --name myclone --clone myenv |
删除虚拟环境
将该指定虚拟环境及其中所安装的包(是整个虚拟环境的目录没有了,所以pip和conda安装的包都没有了)都删除。1
2conda remove --name env_name --all
conda env remove --name myenv
如果只删除虚拟环境中的某个或者某些包则是:1
conda remove --name env_name package_name
还原环境
Conda 保留对环境所做的所有更改的历史记录, 因此,您可以轻松地“回滚”到以前的版本。列出对当前环境的每次更改的历史记录:1
conda list --revisions
要将环境恢复到以前的修订版本:1
2
3conda install --revision=REVNUM
conda install --rev REVNUM
conda install --rev 8 # 例
导出环境
很多的软件依赖特定的环境,我们可以导出环境,这样方便自己在需要时恢复环境,也可以提供给别人用于创建完全相同的环境。1
2
3
4
5
6获得环境中的所有配置
conda env export > environment.yml
或
conda env export --name myenv > myenv.yml
重新还原环境
conda env create -f myenv.yml
环境包管理
在base环境中安装,请切换成管理员启动Prompt,不然权限不够。
查询包的安装情况
查询看当前环境中安装了哪些包1
2conda list
conda list package_name # 查找包含package_name的包
查询当前Anaconda repository中是否有你想要安装的包1
conda search package_name
当然与互联网的连接是执行这个查询操作乃至后续安装的前提条件.
包的安装和更新
在当前(虚拟)环境中安装一个包:1
2conda install package_name
conda install numpy=0.20.3
安装完一个包后可以执行conda list确认现在列表中是否已经包含了新安装的包。
安装包的时候可以指定从哪个channel进行安装,比如说,以下命令表示不是从缺省通道,而是从conda_forge安装某个包。1
conda install pkg_name -c conda_forge --name myenv
可以用以下命令将某个包更新到它的最新版本:1
conda update numpy
卸载包
1 | conda uninstall package_name |
这样会将依赖于这个包的所有其它包也同时卸载。
如果不想删除依赖其当前要删除的包的其他包:1
conda uninstall package_name --force
但是并不建议用这种方式卸载,因为这样会使得你的环境支离破碎,如以下(conda manual description原文)所述:
一个直观的理解就是,如果一个包A被删除了,而依赖于它的包B、C等却没有删除,但是那些包其实也已经不可用了。另一方面,之后你又安装了A的新版本,而不幸的是,B、C却与新版本的A不兼容因此依然是不可用的。
清理anaconda缓存
1 | conda clean -p # 删除没有用的包 --packages |
conda就像个守财奴一样,把每个历史安装包都会好好保存。好处是可以很方便地恢复到旧的历史版本,坏处是占内存空间。前两天由于安装一个新的包,系统报告“CondaMemoryError: The conda process ran out of memory. Increase system memory and/or try again.”,执行”conda clean -y -all”清除了约30G的空间!
Python版本的管理
除了上面在创建虚环境时可以指定python版本外,Anaconda基环境的python版本也可以根据需要进行更改。
将版本变更到指定版本
1 | conda install python=3.5 |
将python版本更新到最新版本
1 | conda update python |
conda && pip
区别
- 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卸载。
- pip和conda在安装软件包时,在依赖关系方面的处理机制不同。pip在递归的串行循环中安装依赖项,不会确保同时满足所有软件包的依赖关系,如果按顺序较早安装的软件包相对于按顺序较晚安装的软件包具有不兼容的依赖项版本,则可能导致环境以微妙的方式被破坏掉;conda使用SAT(satisfiability)solver来验证是否满足环境中安装的所有软件包的所有要求,只要有关依赖项的软件包元数据正确,conda就会按预期产生可用的环境。
能否混用
首先,不建议混用。混用容易导致库的依赖关系出现混乱,然后突然哪天环境可能就崩了,安装不了新的包,无法进行conda update之类的。
其次,由于conda的库确实不如pip的库丰富{很多包只在 pip 有:PYPI有15万可用包,而Anaconda repository中(使用conda命令安装)提供了1,500多个软件包,Anaconda cloud上(使用conda-forge或bioconda命令安装)的几千种其他软件包。},所以有时候可能迫不得已要使用pip安装。切记,只有在conda install搞不定时才使用pip intall。 而且,最后使用虚拟环境进行环境隔离。
并且conda无法删除pip安装的包。
安装在哪里
- conda install xxx:这种方式安装的库都会放在anaconda3/pkgs目录下,这样的好处就是,当在某个环境下已经下载好了某个库,再在另一个环境中还需要这个库时,就可以直接从pkgs目录下将该库复制至新环境而不用重复下载。

- pip install xxx:分两种情况,
- 一种情况就是当前conda环境的python是conda安装的,和系统的不一样,那么xxx会被安装到.conda/envs/current_env/lib/python3.x/site-packages文件夹中。其中如果是base环境,则是下方的路径

如果不是base环境,conda虚拟环境pip安装地址如下(每个虚拟环境都会有一个单独的pip地址)

- 如果当前conda环境用的是系统的python,那么xxx会通常会被安装到~/.local/lib/python3.x/site-packages文件夹中
如何判断conda中某个包是通过conda还是pip安装的?
执行conda list ,用pip安装的包显示的build项目为pypi。如下图所示:

注:base环境中无法看到pip安装的包
conda configuration
conda的配置文件为”.condarc”,该文件在安装时不是缺省存在的。但是当你第一次运行conda config命令时它就被自动创建了。”.condarc”配置文件遵循简单的YAML语法。
1 | C:\Users\用户名\.condarc |
执行conda info,会有信息显示如下所示:







