开源包管理系统和环境管理系统 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