旷世的忧伤

Huoty's Blog

开源包管理系统和环境管理系统 Conda

简介

在做 Python 开发时,或许你接触过 virtualenv,他可以为不同的环境安装不同的 Python 环境支持。如果你还知道 virtualenvwrapper,你会发现它用起来更加方便,它是对 virtualenv 的封装,可以很方便的创建和管理多个不同的开发环境。关于 virtualenv 和 virtualenvwrapper 的介绍可以参考以下内容:

在 Python 中,还有一个更为强大的环境管理工具,即 Conda。Conda 不仅可以管理不同的开发环境,还可以像 pip 一样进行包管理。Virtualenv 与 Conda 的功能功能差别不是很大,个人觉得 Virtualenv 在 Web 开发领域用得多些,Conda 则主要在科学计算环境中比较常用。

Conda 是开源的包管理系统和环境管理系统,可以安装软件包的多个版本和依赖,而且各环境可以很方便的切换。Conda 支持 Linux,OS X 和 Windows 系统。Conda 主要为 Python 程序所创建,但是可以打包和分布任意软件。Conda 有多个版本,包括 Anaconda, Anaconda Server 和 Miniconda。

安装

Conda 的安装可以参考官方文档:http://conda.pydata.org/docs/installation.html,只需下载安装程序安装即可。

这里以在 Linux 下安装 miniconda 为例, 安装过程中默认会在用户主目录下创建一个 miniconda 的目录,同时会在 ~/.bash_profile 中追加配置。如果要卸载 Miniconda,只需要删除相应配置和文件即可:

rm -rf ~/miniconda ~/.condarc ~/.conda ~/.continuum

安装完成后的 miniconda 目录是 Conda 的默认环境,该默认环境被命名为 root,要激活默认环境可以执行如下命令:

source ~/miniconda/bin/activate root

用户创建的其他环境则被存放在 ~/miniconda/envs 中。

使用

1、创建一个新环境

使用 conda 创建环境的方法如下:

conda create –name snowflakes ipython biopython

这将创建一个名为 snowflakes 新环境并存放在 ~/miniconda/envs/snowflakes 中。--name 参数用于指定环境名,也可以简写成 -n。命令最后可以接上在创建的同时需要一并安装的库和模块,同时还可以指定库或模块的版本。例如创建一个 Python3 环境:

conda create -n bunnies python=3 astroid babel

也可以通过克隆其他环境来创建一个新环境:

conda create –name flowers –clone snowflakes

2、环境的激活与退出

要激活一个环境可以使用如下命令:

source ~/miniconda2/bin/activate bunnies

在有些电脑上可能需要指定全路径,即:

source ~/miniconda2/bin/activate bunnies

激活成功后在当前 shell 提示符前会加上环境名,像这样:

(bunnies) $ conda --version
conda 4.0.5

要退出当前环境,可以用如下命令:

source deactivate bunnies

新版的 conda 可以使用如下方式激活与退出:

$ conda activate py27
$ conda deactivate

3、包的安装及其管理

安装包用 conda install <pkg name> 命令,同时可以指定包的版本,例如:

conda install python=3.5

如果需要安装到指定的环境中,则用如下命令:

conda install –name bunnies python=3.5

当然,在安装 conda 是都会默认安装 pip 工具,所有同样可以用 pip 来安装依赖包。

列出当前环境中所有的包:

conda list

列出指定环境中所有的包:

conda -n bunnies

查找可安装的软件包:

conda search python

这样 Conda 会做模糊匹配,也就是所有带 “python” 字符的包都会被查找出来,如果只需要查找 python 包,则可用如下命令:

conda search –full-name python

包的更新:

conda update conda python ipython

删除软件包:

conda remove –name bunnies ipython

国内安装可能会比较慢,可以通过切换源来加上。配置源:

# 添加清华源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
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/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/

# 设置搜索时显示通道地址
conda config --set show_channel_urls yes

# 删除源
conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

# 查看配置(配置记录在 .condarc 文件中)
conda config --show

4、环境管理

  • 查看环境信息

查看系统中安装的所有环境:

conda info –envs

查看 Conda 环境系统信息:

conda info –system

查看环境系统更加详细的信息:

conda info –all

  • 删除环境:

删除环境中指定的包:

conda remove –name flowers ipython biopython

彻底删除环境:

conda env remove –name flowers

  • 导出环境:

conda env export –name bunnies –file build_bunnies.yml

或者

conda list -e > spec-file.txt

  • 从文件创建环境:

如果是用 conda env export --name 导出的文件,则可用下列命令创建:

conda env create -f build_bunnies.yml

如果是用 conda list -e 导出的文件,则用如下方式创建:

conda create –name <env> –file <deps file>

  • 更新环境:

conda env update –name bunnies –file=environment.yml

参考资料

Top