0. 前言

在使用 Python 进行开发或是进行数据分析、机器学习等项目时,常会用到 Conda、Anaconda 等内容,对于初学者而言,常常是一头雾水。这篇文章将主要介绍 Conda 与 Anaconda 三者的区别与使用。

1. 环境配置与管理

我们都知道,Python 的一大特点是有着丰富的第三方库可以调用。我们可以方便地通过 pip 指令安装第三方库,使用 import 指令调用第三方库。相比某些编程语言第三方库繁杂的下载、调用方式,这样的调用方式看起来如此的简洁、优美。

然而事实并非如此。你可能会遇到如下情况:

  • 代码1需要使用0.13版本的库A代码2需要使用0.15版本的库A,然而你电脑中安装的却是0.14版本库A,并且这几个版本的库并不兼容。所以为了跑代码1,你要卸了0.14版本的库装0.13版本的,然后跑代码2,又要这样操作一次。
  • 某个代码需要使用一大堆库,你原有的工作环境也有一大堆库(并且还不知道版本对不对应),那么你要花大量的时间核对库的版本是否相同、下载新的库,进行了不必要的操作。

因而,环境管理的概念应运而生。即在电脑上对不同的开发项目,虚拟出不同的开发环境,在不同的开发环境中配置对应的库版本。环境管理有这些特点:

  • 方便创建新的环境并易于配置管理
  • 方便在不同的环境之间切换
  • 环境之间的内容不相互影响

具体的例子就比如:

  • 对于代码1创建环境1,在环境1中安装0.13版本的库A;对于代码2创建环境2,在环境2中安装0.14版本的库A。运行代码1就切换到环境1,运行代码2就切换到环境2
  • 对于某个新的代码,自动生成一个环境配置文件。这样其他用户在使用的时候,就可以根据该环境配置文件,自动配置需要的运行环境,就不需要手工核对、安装、配置环境了。

2. Conda 的功能

Conda 就是来对 Python 实现上述功能的一个程序,类似功能的程序还有 Virtualenv,这边只针对 Conda 进行具体介绍。

对于 Conda 的安装,因为 Annaconda 预装 Conda,所以此处不介绍单独 Conda 的安装方式。具体你可以参考此处:Installing Conda

这边着重介绍一下几个重要且基本的 Conda 的使用方式。打开终端/控制台/命令行(不同系统称呼不同):

  1. 创建名为 test_env、Python 版本为2.7的环境,并安装 numpy

    1
    conda create -n test_env python=2.7 numpy
  2. 根据不同的系统选择相应的激活/关闭环境的方式

    • 激活

      1
      2
      source activate test_env // Linux or Mac
      activate test_env // Windows
    • 关闭

      1
      2
      source deactivate // Linux or Mac
      deactivate // Windows
  3. 在特定环境中安装库(以下两者都可以)

    1
    2
    pip install
    conda install
  4. 查看安装的环境列表(以下两者都可以)

    1
    2
    conda env list
    conda info --envs
  5. 根据环境配置文件 environment.yml 安装环境

    1
    conda env create -f environment.yml

更进阶的内容可以参考 conda 文档
此处还有 Conda Cheat Sheet 可供下载参考。

3. Anaconda 介绍

Anaconda 名字看起来和 Conda 长的很像,其实两者差别不小。总的来说,Anaconda 是一个整合了包括 Conda(环境管理)、Spyder(Python开发)、Jupyter(稍后着重介绍) 功能在内的,一个专为数据分析、机器学习开发的平台(所以说你只要安装了 Anaconda,你就不需要再次安装 Conda 了)。Anaconda 还内置了各大机器学习、数据分析的库,包括 Numpy、Pandas、Scikit-learn、Matplotlib 等。因而安装 Anaconda,是数据分析、机器学习工程师的必备之选。

总的来说,对于初学者而言,要使用的 Anaconda 功能很局限,主要是包括 conda、Jupyter 在内的核心功能。本文挑选 Jupyter 着重讲解。

4. Jupyter 介绍

我们知道,python 有两种执行方式:命令行执行与文件执行。前者就像是你打开控制台输入指令一样,键入一行代码敲击回车,就会得到结果;后者是把一堆代码写在文件里,然后批量执行。

对于初学数据分析、机器学习的项目而言,命令行执行的好处不言而喻——输入一行指令就能得到相应的结果,有利于学者查看自己代码的对错,也有利于信息直接地呈现。由此,Jupyter,这一“加强版 Python 命令行“应运而生。当然了,Jupyter的功能远超于此,Jupyter也经过了长期的演化才形成了今天的形态。本文只简单地介绍基本的功能。

  1. 打开 Jupyter Notebook(不推荐在 anacona 中打开,推荐直接在命令行打开的方式):

    1
    jupyter notebook
  2. 用 Jupyter Notebook 打开 /home/test/test.ipynb 文件。

    1
    jupyter notebook /home/test/test.ipynb

5. 总结

本文简单地介绍了 Conda、Anaconda、Jupyter 三个工具,还提及了环境管理的概念。Anaconda 是一个整合了包括 Conda、Spyder、Jupyter 功能在内的,一个专为数据分析、机器学习开发的平台;Conda 是实现环境管理功能的程序;Jupyter 是一个“加强版的 Python 命令行”。

更多的内容你还可以参考: