在基于 python 进行数据分析、机器学习等领域的实践和学习时,由于代码的更迭和更新,运行他人实现的代码或尝试安装新的工具库时往往需要指定特定版本的其他工具库,以满足特定环境的构建条件。而将同一工具库的不同版本或者具有相似功能的不同工具库堆积在同一个环境下显然会为环境的管理和使用增添负担。故而,根据不同的任务要求,为不同的需求和应用创建相互分离的环境,使得不同任务的环境不会相互干扰和影响,是一种自然而然的选择。上述为特定的任务和需求而配置构建的环境一般被称为虚拟环境。目前,比较常见的虚拟环境管理工具包括 virtualenv 和 conda 等。本文主要记录使用 Anaconda 提供的包管理工具 conda 进行虚拟环境管理的基本操作命令,供学习与交流。
简介
Anaconda 是一种 Python 语言的免费增值开源发行版,用于进行大规模数据处理、预测分析,和科学计算,致力于简化包的管理和部署(维基百科)。 Anaconda 使用软件包管理系统Conda 进行包管理,为用户对不同版本、不同功能的工具包的环境进行配置和管理提供便利。
通过 Anaconda 所提供的 conda 工具创建的环境一般位于安装目录的 envs 目录下,如笔者创建的环境的默认保存路径即位于 /path/to/anaconda3/envs 目录。
创建环境
用户通过 conda create 命令创建新的环境,环境默认位于 envs 目录下,可通过 python=x.x 指定 python 版本,没有指定时,创建的环境中使用的 python 版本与当前环境使用的版本一致。在使用上述命令时,可在最后附加需要安装在该环境中的包的名称,从而在创建的环境中安装对应的包。
conda create -n/--name env_name [python=x.x][package_name] //创建名为 env_name 的环境,可进一步指定使用的 python 版本和该环境中安装的包
使用示例:
创建名为 py2 的环境,使用的 python 版本为 python2:
conda create -n py2 python=2 //创建名为 py2 的环境,其中的 python 版本为python2
创建名为 yh 的环境,并在其中安装 scipy 包:
conda create --name yh scipy=0.15.0 //创建名为 yh 的环境,并安装 scipy 0.15.0 包,其使用的版本为当前使用的 python 版本
上述安装到环境中的包均可通过 package=x.x 的方式指定特定安装包的版本。
查看环境
使用 conda env list 命令查看已有的 conda 环境,包括环境的名字和其对应的目录。
conda env list //列出对应环境以及对应的目录
使用和退出环境
进入创建的虚拟环境
source activate env_name //进入名为 env_name 的环境
退出当前的虚拟环境
source deactivate //退出当前的虚拟环境
这里,activate 和 deactivate 命令文件位于 anaconda 安装目录下的 bin 目录中,但一般而言在安装时设置其不具备可执行权限,故而想要执行上述程序需要在前面加入 source 命令,source 会读取指定文件的内容( 这里即 activate 和 deactivate ),并在当前 shell 执行该文件的内容。在较新版本的 conda 环境中,也可以通过命令 conda activate env_name 进入创建的环境。
conda常用命令
conda list (-n env_name) //显示环境中安装的包的信息 conda install (-n env_name) package //在特定环境中安装包 conda remove (-n env_name) package //移除特定环境中的包 conda remove --all -n env_name //移除特定环境中的所有包
conda 命令既可以直接针对当前虚拟环境进行操作,也可通过 -n 参数指定针对某个特定的环境进行操作。当不指定 -n 参数时,默认针对当前环境进行操作。
更多的命令可以通过 conda 的 -h 选项查看对应的帮助文档,来了解命令的参数等信息。
分享环境
conda 允许用户通过 .yml 文件的方式共享其创建的环境,从而使得其他用户能够根据上述命令构建一致的实验/操作环境。
导出环境配置的文件
conda env export > environment.yml //将当前环境的配置导出到 environment.yml 文件中
上述命令会将当前环境下的 pip 包和 conda 包配置导出到 environment.yml 文件中,其他用户可通过上述文件构建新的与 .yml 文件配置保持一致的环境。
根据 .yml 文件创建环境
conda env create -f environment.yml //根据 environment.yml 文件创建新的环境
创建的新环境的名称在 .yml 文件的第一行 name 字段中已经指定好。
MISC——虚拟环境结合 vscode 的使用
当当前环境下创建有多个不同的虚拟环境时,在使用如 vscode( virtual studio code )时也需要指定当前项目所特定的运行环境,打开一个 python 项目,并通过 ctrl + shift + p 打开命令行工具,输入 Python: Select Interpreter ,即可选择当前项目所需使用的虚拟环境。
上述操作若在 vscode 的欢迎界面( 未打开任何项目时 )执行,则操作指定的是后续 vscode 打开 python 项目的默认环境,用户也可以在特定的项目中通过上述操作指定新的特定于项目的虚拟环境。下图可以看到,笔者系统上的环境包括 ubuntu 自带的 python 环境和笔者通过 Anaconda 创建的若干虚拟环境,此时只需根据任务需要选择合适的运行环境即可。
参考