CONDA使用入门

 

近来已经习惯使用 Continuum Analytics 公司的Conda产品作为我的主要开发工具箱. Conda提供比隔离环境包 virtualenv 和 python 版本切换包 pyenv 更多, 本文就是带你进行基础环境的搭建和 miniconda(一个轻量级conda的发布包) 的使用.

Conda简介

先介绍一些名词:

  • Continuum Analytics: 开发和发布 conda/miniconda/anaconda 包的公司.
  • Conda: 命令行工具, 类似 pip 或者 virtualenv.
  • Miniconda: conda 的一个轻量级的发布包, 只包含最基础的特性.
  • Anaconda: 一个更丰富的conda包, 包含科学计算python用户的常用包, 这个包在miniconda上层.

Conda其实做的比简单的一个python版本切换和环境隔离的要多, 它就是它自己! 它是一个全新的包管理系统, 包资源库, 它可以管理更多. 在使用conda的同时你还是可以用pip来安装包, 本文就是做一些基础层级的使用的介绍.

安装

官网的安装介绍文档在这里

Conda支持各操作系统的安装, 这里演示安装miniconda, 到官网下载安装包, 在Mac平台下是一个shell文件, 在官网的下载地址里, 注意到有python 2 和python 3 的安装版本, 其实这个不太重要, 因为conda把python也当做是一个可安装的包, 你在安装好conda后依然可以切换python的版本.

下载好后直接执行这个文件

  1. bash Miniconda-latest-MacOSX-x86_64.sh

替换 Virtualenv

Virtualenv 是一个帮你创建隔离环境的包, 在隔离环境里可以使用pip安装包. 同样的功能在conda中通过 conda create 和 conda env 两个命令来实现的.

创建隔离环境

要创建一个运行flask应用的环境:

  1. conda create -n myflaskapp flask

上面这个命令会创建一个名叫myflaskapp的环境, 并且在里面安装好flask包. 要注意的是conda create命令要求在创建新环境的时候必须至少要指定一个要安装的包, 如果没有什么具体的包想指定的可以简单传入python就好了, 如下:

  1. conda create -n myflaskapp python

运行好上面的命令, 你会看到如下的提示, 它教你如何激活和取消这个隔离环境:

  1. # To activate this environment, use:
  2. # $ source activate myflaskapp
  3. #
  4. # To deactivate this environment, use:
  5. # $ source deactivate

用命令 source activate myflaskapp 激活环境后, 可以使用 conda list 命令来查看已经安装好的包:

  1. (myflaskapp) $ conda list
  2. # packages in environment at /Users/kpurdon/miniconda/envs/myflaskapp:
  3. #
  4. openssl 1.0.1k 1
  5. pip 7.1.0 py34_0
  6. python 3.4.3 0
  7. readline 6.2 2
  8. setuptools 18.0.1 py34_0
  9. sqlite 3.8.4.1 1
  10. tk 8.5.18 0
  11. xz 5.0.5 0
  12. zlib 1.2.8 0

注意到上面第三列的 py34_0 所在的行才是安装好的python包, 其他的(python, readline, sqlite, tk, xz, and zlib)都不是python的包. 也可以通过 pip list 来查看安装好的python包.

  1. (myflaskapp) $ pip list
  2. pip (7.1.0)
  3. setuptools (18.0.1)

安装包

Conda提供了完整的pip和pypi的替代, 但是你依然可以使用pip来正常安装包. 我们继续我们的flask例子, 我们依次使用pip和conda来安装.

  1. pip install flask
  2. (myflaskapp) $ conda list
  3. # packages in environment at /Users/kpurdon/miniconda/envs/myflaskapp:
  4. #
  5. flask 0.10.1 <pip>
  6. itsdangerous 0.24 <pip>
  7. jinja2 2.8 <pip>
  8. markupsafe 0.23 <pip>
  9. openssl 1.0.1k 1
  10. pip 7.1.0 py34_0
  11. python 3.4.3 0
  12. readline 6.2 2
  13. setuptools 18.0.1 py34_0
  14. sqlite 3.8.4.1 1
  15. tk 8.5.18 0
  16. werkzeug 0.10.4 <pip>
  17. xz 5.0.5 0
  18. zlib 1.2.8 0

上面可以看到不是通过pip安装的已经移除了<pip>的标志, 说明这些包是从 anaconda.org 网站上下载的. 如果想知道包的具体渠道来源, 可以执行下面的配置命令:

  1. conda config --set show_channel_urls yes

上面的命令会修改你的home文件夹下面的 .condarc 配置文件.

  1. $ cat ~/.condarc
  2. show_channel_urls: yes

现在执行conda list就可以清楚的知道每个包的下载渠道, defaults是Continuum Analytics公司的官网渠道.

  1. (myflaskapp) $ conda list
  2. # packages in environment at /Users/kpurdon/miniconda/envs/myflaskapp:
  3. #
  4. flask 0.10.1 py34_1 defaults
  5. itsdangerous 0.24 py34_0 defaults
  6. jinja2 2.7.3 py34_1 defaults
  7. markupsafe 0.23 py34_0 defaults
  8. openssl 1.0.1k 1 http://repo.continuum.io/pkgs/free/osx-64/openssl-1.0.1k-1.tar.bz2
  9. pip 7.1.0 py34_0 defaults
  10. python 3.4.3 0 defaults
  11. readline 6.2 2 <unknown>
  12. setuptools 18.0.1 py34_0 defaults
  13. sqlite 3.8.4.1 1 http://repo.continuum.io/pkgs/free/osx-64/sqlite-3.8.4.1-1.tar.bz2
  14. tk 8.5.18 0 http://repo.continuum.io/pkgs/free/osx-64/tk-8.5.18-0.tar.bz2
  15. werkzeug 0.10.4 py34_0 defaults
  16. xz 5.0.5 0 defaults
  17. zlib 1.2.8 0 <unknown>

pip install vs conda install

pip install

  • 优点
    • Python 包的标准选择.
    • 大多数包都先发布到这.
    • 包几乎都是最新的版本.
  • 缺点
    • 安装科学计算包耗时太长, 经常还很多问题.

conda install

  • 优点
    • 和conda集成很好.
    • 安装科学计算包很快很方便.
  • 缺点
    • 包的更新不如pip资源库那么及时.
    • 有些在pip上的包在anaconda.org上没有.

创建 Requirements 文件

文件 requirements.txt 是virtualenv用来存储依赖相应版本的包的列表文件. Conda也有相应的文件, 叫做 environment.yaml, 我们能从一个conda环境中同时创建出两个文件. 如下的conda环境

  1. (myflaskapp) $ conda list
  2. # packages in environment at /Users/kpurdon/miniconda/envs/myflaskapp:
  3. #
  4. flask 0.10.1 py34_1 defaults
  5. itsdangerous 0.24 py34_0 defaults
  6. jinja2 2.7.3 py34_1 defaults
  7. markupsafe 0.23 py34_0 defaults
  8. openssl 1.0.1k 1 http://repo.continuum.io/pkgs/free/osx-64/openssl-1.0.1k-1.tar.bz2
  9. pip 7.1.0 py34_0 defaults
  10. python 3.4.3 0 defaults
  11. readline 6.2 2 <unknown>
  12. setuptools 18.0.1 py34_0 defaults
  13. sqlite 3.8.4.1 1 http://repo.continuum.io/pkgs/free/osx-64/sqlite-3.8.4.1-1.tar.bz2
  14. tk 8.5.18 0 http://repo.continuum.io/pkgs/free/osx-64/tk-8.5.18-0.tar.bz2
  15. werkzeug 0.10.4 py34_0 defaults
  16. xz 5.0.5 0 defaults
  17. zlib 1.2.8 0 <unknown>

创建 requirements.txt文件:

  1. pip list > requirements.txt
  2. Flask (0.10.1)
  3. itsdangerous (0.24)
  4. Jinja2 (2.7.3)
  5. MarkupSafe (0.23)
  6. pip (7.1.0)
  7. setuptools (18.0.1)
  8. Werkzeug (0.10.4)

创建 environment.yaml文件:

  1. conda env export > environment.yaml

替换pyenv

pyenv是一个让你在一个系统里可以在不同版本的python中安装和切换的包. 通过conda环境也是可以做到这一点的.

创建环境

  1. conda create -n py3 python=3*
  2. conda create -n py2 python=2*

上面两个命令会创建分别安装python3和python2的环境. 我一般使用其中一个作为的默认环境, 并且把 source activate py3 命令加入我的启动项中, 在某个隔离环境中去执行我的python任务. 对于不同的项目我也会创建不同的隔离环境.

翻译自:

用 Continuum Analytics Conda 作为 virtualenv, pyenv 和其他的替代

 

发表评论

匿名网友

拖动滑块以完成验证
加载失败