> For the complete documentation index, see [llms.txt](https://johannesliu.gitbook.io/data-science-python-implemented/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://johannesliu.gitbook.io/data-science-python-implemented/2.0-build_environment/2.2-anaconda.md).

# 2.2 Anaconda

### 2.2.1 Anaconda简介

Anaconda的中文译名为蟒蛇。它是一个极其流行的，开源的Python发行版本，因包含大量的第三方类库及其依赖项而著名。使用Anaconda可以快速安装、运行和升级包及其依赖项。

此外，开发者在开发过程中经常会遇到Python版本或Python库版本不符合需求的问题，需要对Python版本或Python库版本进行升级或者降级，然而这种操作即有可能产生连锁反应，使得python与库之间，库与库之间产生不兼容问题，进而导致Python环境被污染。这时候，使用Anaconda可以方便开发者对Python环境进行管理。使用Anaconda建立的Python环境与系统Python环境和与Anaconda建立的其他Python环境是完全隔离的。这就保障了不同Python环境之间是相互独立的。Anaconda克服了virtualenv工具的不足，使创建环境变得简单。

所谓一图胜千言，表2.3将conda，pip，virtualenv工具能力对比，同时列出了各种工具常用指令，从中我们也可以看出Anaconda覆盖pip和virtualenv的所有功能，是包和与环境管理方面无可替代的选择。

表2.3

| 任务       | conda命令                                               | pip命令                                                             | virtualenv命令                                           |
| -------- | ----------------------------------------------------- | ----------------------------------------------------------------- | ------------------------------------------------------ |
| 安装包      | conda install $PACKAGE\_NAME                          | pip install $PACKAGE\_NAME                                        |                                                        |
| 更新包      | conda update --name $ENVIRONMENT\_NAME $PACKAGE\_NAME | pip install --upgrade $PACKAGE\_NAME                              |                                                        |
| 更新包管理工具  | conda update conda                                    | Linux/macOS: pip install -U pip Win: python -m pip install -U pip |                                                        |
| 卸载包      | conda remove --name $ENVIRONMENT\_NAME $PACKAGE\_NAME | pip uninstall $PACKAGE\_NAME                                      |                                                        |
| 创建环境     | conda create --name $ENVIRONMENT\_NAME python         |                                                                   | cd $ENV\_BASE\_DIR; virtualenv $ENVIRONMENT\_NAME      |
| 激活环境     | conda activate $ENVIRONMENT\_NAME\*                   |                                                                   | source $ENV\_BASE\_DIR/$ENVIRONMENT\_NAME/bin/activate |
| 注销环境     | source deactivate                                     |                                                                   | deactivate                                             |
| 查找可用包    | conda search $SEARCH\_TERM                            | pip search $SEARCH\_TERM                                          |                                                        |
| 从特定源安装包  | conda install --channel $URL $PACKAGE\_NAME           | pip install --index-url $URL $PACKAGE\_NAME                       |                                                        |
| 列举包      | conda list --name $ENVIRONMENT\_NAME                  | pip list                                                          |                                                        |
| 创建需求文件   | conda list --export                                   | pip freeze                                                        |                                                        |
| 列举环境     | conda info --envs                                     |                                                                   | Install virtualenv wrapper, then lsvirtualenv          |
| 安装包管理工具  | conda install pip                                     | pip install conda                                                 |                                                        |
| 安装python | conda install python=x.x                              |                                                                   |                                                        |
| 更新python | conda update python\*                                 |                                                                   |                                                        |

我们先前已经对pip和virtualenv命令进行了讲解，我们将会在2.2.3，2.2.4节对conda命令进行讲解。

### 2.2.2 Anaconda的安装

#### Windows

我们通过<https://www.anaconda.com/distribution/下载所需要的版本，如图2.2所示。>

![](https://914753012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mjx-LkXo6sfWzVc3cno%2Fuploads%2Fgit-blob-ef58c5ec5feb0d4f73edf2dcad54d8620b269730%2F3878e68a3667f2b77ed643f25967568f.png?alt=media)

图2.2 Anaconda下载页面

下载完成后，双击进行安装，选择路径，我们推荐把Anaconda3加入环境变量，同时把Anaconda默认环境所带解释器作为系统默认的Python解释器，如图2.3所示。

![](https://914753012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mjx-LkXo6sfWzVc3cno%2Fuploads%2Fgit-blob-847203c97ff75a406977414654cd16c4cbaee385%2F0807d071eb9490d8a646e4f388ddc406.png?alt=media)

图2.3 Anaconda3的安装

人工配置环境变量，可遵循以下步骤。

第一步：右击“计算机”（Windows 10操作系统中为“此电脑”），选择“属性”选项，打开“系统”窗口，如图1-5所示。

![](https://914753012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mjx-LkXo6sfWzVc3cno%2Fuploads%2Fgit-blob-a2a002de4a2d2636d58f096b0c9b553cee2cdd65%2Fd8d2c704de106e19b1fcaffa329cd4ab.png?alt=media)

图1-5 进入“系统”窗口

第二步：选择“高级系统设置”（Advanced system settings）选项，单击“高级”选项卡的“环境变量”按钮，如图1-6所示。

第三步：将Anaconda的相关安装路径（编者的路径为C:\Users\Johan\Anaconda3）添加到Path变量中，如图1-7所示。

![](https://914753012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mjx-LkXo6sfWzVc3cno%2Fuploads%2Fgit-blob-f5ab0a89fbf69029fc0451b676a71fa423411387%2F1f1b1d93e7a6868fdc72f1330b36044f.png?alt=media)

图1-6 单击“环境变量”按钮

![](https://914753012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mjx-LkXo6sfWzVc3cno%2Fuploads%2Fgit-blob-2faad5fda2a57e84ab2c20b566d187d97a7836ae%2Fceb5b9184f85719aae6f77d693899925.png?alt=media)

图1-7 配置Path环境变量

在这里我们将Anaconda的相关安装路径加入了用户环境变量。这样做的好处使，当该PC有多位用户使用时，不会因为用户环境变量不同而发生冲突。

此外，还可以将Anaconda的相关安装路径加入系统环境变量。这样做会对PC上的所有用户都会生效。

#### Ubuntu

我们通过<https://www.anaconda.com/distribution/下载所需要的版本。在下载所得文件Anaconda3-2019.03-Linux-x86\\_64.sh所在的目录下键入如下命令：>

sudo chmod +x ./ Anaconda3-2019.03-Linux-x86\_64.sh

./Anaconda3-2019.03-Linux-x86\_64.sh #不要在root下安装

接受许条款后，选择Anaconda的安装路径，我们建议在默认家路径下进行安装。一路确认，即可完成

Ubuntu配置用户环境变量的方法如下：

在terminal中输入

sudo vim \~/.bashrc //ashrc是用户级环境变量，只对当前用户有效

在.bashrc中输入：

export PATH=\~/anaconda3/bin:$PATH #将anaconda3加入到用户环境变量前

此外，还可以将anaconda3加入到系统环境变量中，需要修改的文件为/etc/profile，其他操作一致。

#### Mac OS X

从官网下载Mac OS X 的anaconda安装程序。当安装程序运行时，它会自动将anaconda可执行文件路径附加到.bash\_profile中。这位于/users/$user/.bash\_profile。要验证一切正常，请尝试在系统shell中启动ipython（打开终端应用程序以获取命令提示）：

可以采用与Ubuntu相同的人工环境变量配置方法对Mac OS X的环境变量进行人工配置。更多Mac OS X的环境变量配置方法，请参照官方文档。

### 2.2.3 包管理

#### 查询包

查询已安装的包命令如下：

conda list

模糊查询：

conda serach item\_name #item\_name为包的部分拼写

#### 安装包

在安装包的过程中，conda还会自动安装依赖项。例如：scikit-learn需要依赖于Numpy，Scipy如果只安装scikit-learn，则conda还会安装Numpy, Scipy

包安装命令如下：

conda install package\_name1 \[package\_name2 Package\_name3 … Package\_namen]

#### 卸载包

包卸载命令如下

conda remove package\_name1\[ package\_name2 Package\_name3 … Package\_namen]

#### 更新包

包更新命令如下

conda update package\_name1\[ package\_name2 Package\_name3 … Package\_namen]

更新所有包命令如下：

conda update –all

#### 切换源

熟悉\*nix的读者在使用apt或homebrew工具安装软件时往往需要对第三方源进行配置，在一些特殊的情况下，还需要对软件源的优先级进行指定。conda作为一种强大的包管理工具，同样允许使用者自定义安装源。

在安装包一节中，我们使用conda install packge\_name的方式，从默认频道中安装或更新包。然而，对某些领域的专业人士来说，官方默认频道(Continuum)往往无法提供他们所需要的包。这是，就需要人工指定conda的安装源。

有两种更改安装频道的方法，一种是每次指定一个频道对包进行安装：

conda install -c some-channel packagename

另一种是，将经常使用的频道，添加到conda配置中。当多个频道均具有特定的安装包时，conda根据配置列表种第三方频道的先后顺序确定频道优先级，进行包的安装。

下述命令将频道some\_channel添加到channels配置列表的顶部（最高优先级）：

conda config --add channels some-channel

下述命令将频道some\_channel添加到channels配置列表的底部（最低优先级）：

conda config --append channels some-channel

删除channels配置列表中的频道：

conda config --remove channels some-channel

conda-forge是除了默认频道外最常用的conda频道。conda-forge是为了建立和维护软件包由社区主导的python包的集合，为conda包管理器构建基础结构和发行版。

我们使用conda-forge取代默认频道往往基于以下两方面原因：

1. conda-forge往往可以提供默认频道不能提供的包
2. conda-forge往往可以提供更新的包

除了conda-forge源以外，还存在生物信息学常用的binconda源等，在此不再熬述。

### 2.2.4 环境管理

#### 查询环境

查询环境命令如下：

conda env list

#### 创建环境

创建环境命令如下：

conda create -n env\_name package\_name1\[ package\_name2 package\_name3 … package\_namen]

此命令会创建包含若干包的Python环境，其中 -n 后边跟环境名称

例如：conda create -n iexkliu pandas matplotlib，这样便会创建包含pands和matplotlib的python运行环境

同时，在创建环境时，可以指定安装在环境中的编程语言

如我们希望在安装环境时同时获得python2，python3，C++语言的支持：

#### 进入环境

进入环境命令如下

activate env\_name #对于Linux和Mac用户，键入source activate env\_name

#### 注销环境

进入环境命令如下

deactivate env\_name #对于Linux和Mac用户，键入source deactivate env\_name

#### 共享环境

1. 导出环境

共享环境可以让他人安装我们的开发环境中所使用的包。且新安装的包的版本与我们所写的代码中用到的包的版本是一致的。

共享环境的命令如下：

conda env export > environment.yaml

通过这条命令可以将当前环境保存到终端当前目录下。键入type environment.yaml可以查看该环境配置文件的内容，亦可以使用记事本打开。

在 GitHub 上共享代码时，最好同样创建环境文件并将其包括在代码库中。这能让其他人更轻松地安装你的代码的所有依赖项。

1. 导入环境

首先我们需要激活被导入环境，如我们的被导入环境为inport\_env接着，我们使用如下命令将environment.yaml中环境配置导入到当前环境：

conda env update -f=/path/to/enviroment.yml

其中-f表示环境配置导出文件所在的本地路径。

![](https://914753012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mjx-LkXo6sfWzVc3cno%2Fuploads%2Fgit-blob-e127b4b225ec51988ed9e3b9e9c636afe19576e7%2Fe1b53823c60ee1eb347fc4acb3ba862e.png?alt=media)

#### 删除环境

删除环境的命令如下：

conda env remove -n env\_name 删除指定的环境
