Conda详解
2019-02-14T08:52:30    7595    0    1
#### 在本文中,我们将会介绍Conda相关的知识,从而让大家能够快速的了解什么是Conda以及如何使用Conda。 ## 什么是Conda Conda是Python中用于管理包和环境的一大利器。使用Conda,我们还可以非常便利的使用数据科学相关的包。Conda可以帮助我们创建虚拟环境,从而方便的应用于多个项目中。 Anaconda实际上是一个软件的发行版,附带了Conda、python和150多个科学软件包及其相关的包。Conda是一个包和环境管理器。Anaconda是一个本身很大(大约500M),因为它附带了Python中最常见的数据科学包。如果您不需要所有的软件包,或者需要节省带宽或存储空间,那么也有miniconda,一个只包含conda和python的发行版。我们同样可以用Conda安装任何可用的软件包。 Conda是一个命令行程序,我们需要通过命令行来使用它。 ![title](/static/files/591/5989cee6e519f50ef7000031/98/images/a297110986603904b4600de98a3e314e.png) **包管理器**用于在计算机上安装第三方库和相关软件。我们已经熟悉pip,它是Python库的默认包管理器。conda与pip类似,只是现有的包主要集中在数据科学上,而pip是通用的。但是,conda并不像pip那样特定于python,它也可以安装非python包。它是任何软件栈的包管理器。也就是说,并非所有的python库都可以从anaconda发行版和conda获得。您仍然可以在conda环境下使用pip来安装Python第三方软件包。 conda预安装了一系列科学计算包。例如,anaconda发行版附带了用mkl库编译的numpy、scipy和scikit learn,加快了各种数学操作。conda包由分发版的贡献者维护,这意味着它们通常落后于新版本。但是,这样也有一个好处,通常conda版本的包更加稳定。 ![title](/static/files/591/5989cee6e519f50ef7000031/22/images/4d622576aaf21bb1110c40f226620575.png) 除了管理包之外,conda还是一个虚拟环境管理器。它类似于其他流行的环境管理器virtualenv和pyenv。 虚拟环境允许您隔离用于不同项目的包。通常,您将使用依赖于某些库的不同版本的代码。默认情况下,我们无法在同一台机器上同时安装两个版本的numpy。而通过虚拟环境,我们可以为每个版本的numpy创建一个环境,然后在项目的适当环境中工作。 在处理python 2和python 3时,同样存在着类似的问题。您可能有一些项目需要用Python3运行,同时另外一些项目需要用Python2运行。同时安装这两个版本的Python可能会导致很多混乱和错误。因此,最好是有单独的虚拟环境来管理和使用。 您还可以将环境中用到的包列表导出到文件中,然后将该文件包含在代码中。这允许其他人轻松加载代码的所有依赖项。这与pip freeze>requirements.txt具有类似的功能。 接下来,我们将详细介绍一下使用Anaconda的使用方法。包括安装,包管理与环境管理等。 ## Conda的安装 Anaconda可以在Windows,MacOS以及Linux下进行安装。关于Anaconda的安装,可以参考官方文档[https://www.anaconda.com/download/](https://www.anaconda.com/download/) 如果您已经在电脑上安装了python,此时再次安装anaconda不会对原有的python环境进行破坏。但是,默认在脚本、程序中使用的python将会是Anaconda所安装的Python。 安装完成后,您将自动处于默认的conda环境中。此时可以使用如下命令查看Conda列表。 ```bash conda list ``` ## 包管理 当我们成功安装anaconda后,我们可以很容易的使用`conda`来进行包管理。例如: ```bash conda install numpy ``` 除了每次安装一个包外,我们还可以一次性安装多个包,例如: ```bash conda install numpy pandas ``` 此外,我们还可以安装某个指定版本的包: ```bash conda install numpy=1.10 ``` Ps:使用conda安装指定包时,conda可以自动处理相关的包依赖。假设本身没有安装`numpy`时,若我们使用`conda install scipy`,则此时`conda`会自动安装`numpy`,因为`scipy`本身依赖`numpy`。 此外,conda还有一些其他的常用命令: 1. 删除某个包:`conda remove package_name` 2. 升级某个包:`conda upgrade package_name` 3. 升级全部包:`conda upgrade --all` 4. 查看包列表:`conda list` 5. 模糊查询包:`conda search 'keywords'` ## 环境管理 正如之前所说,conda可以用于创建多个环境而从进行项目隔离。 创建一个新的环境的格式如下: ``` conda create -n env_name list_of_packages ``` 其中,`-n`后的参数`env_name`表示环境名称。 接着可以跟着0个或多个包名称。 一个示例如下: ``` conda create -n my_env numpy ``` 表示创建了一个新的环境:my_env。并同时在该环境中安装一个包:numpy。 此外,在创建环境时,我们可以指定Python的版本。例如: ``` conda create -n my_env python=2.7 ``` 其中,我们可以在`conda`命令中,增加`python=x`的信息用于指定Python的版本号。 此时,我们可以轻松的实现在一台机器上兼容Python2和Python3了。 当我们使用conda创建了一个新的环境后,可以使用如下命令进入该环境: ``` conda activate env_name ``` 此时,当我们进行该环境后,可以看命令行中的引导符中已经提示出了当前所属的conda环境: ![title](/static/files/591/5989cee6e519f50ef7000031/23/images/18e6e1eea337e20c8d523deceacb82b2.png) 想要离开当前环境时,则只需要执行如下命令即可: ``` conda deactivate ``` ## 环境的保存与加载 对于conda环境,其有着一个如下特性:**环境共享**。 通过以配置文件的形式可以保存环境相关的全部信息。 我们可以使用如下命令将相关的环境信息保存在一个yaml文件中: ``` conda env export > env.yaml ``` 此时,我们已经将当前环境相关的信息全部存储在`env.yaml`文件中。当我们希望在其他机器中创建一个相同的环境时,可以直接执行如下命令: ``` conda env create -f env.yaml ``` 当你不记得在当前机器上存在哪些conda环境时,可以执行如下命令列出全部环境: ``` conda env list ``` ![title](/static/files/591/5989cee6e519f50ef7000031/42/images/a31551f7ba51cccc689905ec087b37b6.png) 此时,*号所在的行表示当前所属的环境。 当某个环境我们不再需要时,可以直接执行如下命令来删除该环境: ``` conda env remove -n env_name ```

上一篇: Python单测框架pytest详解

下一篇: Python Socket编程快速入门

1条评论
  • solxnp

    请问下,作者能否提供RSS地址供订阅?

    我用的阅读器,使用的css选择器,不知道为什么,贵站的文章总是无法订阅,其他站点都OK,如果能直接提供rss地址就感谢了


    • 念师

      感谢您的宝贵意见,近期会对网站进行更新,支持RSS订阅。敬请关注。