一、Conda简介
(简介部分翻译自官方文档)
Conda是一个开源包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间切换。
Conda的发行版包括Anaconda和Miniconda。Conda在pypi中也是可用的,虽然这种方法可能不是最新的。
Miniconda是一个小的“引导”版本,只包括conda,Python和它们依赖的包。超过720个科学软件包及其依赖项可以使用“conda install”命令单独安装。
Anaconda包括conda,conda-build,Python和超过150个自动安装的科学包及其依赖项。与Miniconda一样,可以使用“conda install”命令单独安装超过250个额外的科学软件包。
pip install conda使用pypi上发布的版本。此版本允许您使用任何python安装创建新的conda环境,然后将新版本的Python安装到这些环境中。这些环境仍被认为是“Anaconda安装”。
conda 命令是管理Anaconda安装的主要接口。它可以查询和搜索Anaconda软件包索引和当前的Anaconda安装,创建新的conda环境,以及在现有的conda环境中安装和更新软件包。
Anaconda适用对象:
初次接触conda或Python
想自动安装Python和超过150个科学包
有时间和磁盘空间(几分钟和4GB)
不想安装要单独使用的每个软件包
Miniconda适用对象:
不介意安装要单独使用的每个软件包
没有时间或磁盘空间一次安装超过150个软件包
只是想快速访问Python和conda命令,并希望稍后整理其他程序
二、使用方法简介
创建虚拟环境
使用 conda create 命令创建虚拟环境,使用 --name 选项(-n)指定虚拟环境名称:
conda create --name foo
使用 conda info 命令查看当前环境名称、Python 版本、虚拟环境文件夹位置、Conda 版本等等各种信息:
conda info
使用 --envs 选项(-e)查看所有已创建的虚拟环境。在列出的虚拟环境中,使用星号(*)标识的是当前激活的虚拟环境:
conda info --envs
激活虚拟环境
使用 conda activate 命令激活虚拟环境,添加虚拟环境名作为参数:
conda activate foo
和venv相似,激活以后会在命令行显示虚拟环境名称,比如:
(foo) $
不添加虚拟环境名称,就会激活基础环境(base):
conda activate
设置虚拟环境的 Python 版本
在创建虚拟环境的时候,可以使用 python 参数指定 Python 版本。假设你使用的 Miniconda 默认版本是 Python 3.7,如果你想创建一个 Python 2.7 的虚拟环境,使用下面的命令:
conda create --name bar python=3.7
你可以在虚拟环境名加上标识方便识别 Python 版本,比如:
conda create --name bar-py37 python=3.7
搭配 pip / Poetry 来管理依赖
因为 Conda 安装库的时候默认使用 Conda 自己的仓库,这里包含的 720 多个库除了流行的 Python 包外大多是数据科学相关的包。更好的选择是使用官方 PyPI 仓库,这样可以确保使用到最近更新的包,而且不会出现有些包找不到的情况。
我们要做的就是只用 Conda 的 Python 版本和虚拟环境管理功能,不用它来管理依赖。依赖管理(安装、卸载、更新等)仍然使用 pip 进行,或是进一步搭配 pip-tools 来管理依赖。
Anaconda环境默认带有pip,也可以在 conda 环境内使用下面的命令安装 pip:
conda install pip
或是统一使用下面的命令格式创建虚拟环境:
conda create --name bar pip
这样在执行 pip 命令时会使用虚拟环境内的 pip,而不是系统全局的 pip。这样做的副作用是会产生几个多余的依赖。
除此之外,也可以搭配使用 Poetry。Poetry 默认会自动创建虚拟环境,所以需要关闭 Poetry 自动创建虚拟环境的设定,可以执行下面的命令:
poetry config settings.virtualenvs.create false
总结
conda相比venv优点
1.单个工具足以替代 pyenv+virtualenv/venv+virtualenvwrapper 的多个工具组合
2.类似 virtualenvwrapper,可以在任意位置激活虚拟环境,而不是必须在项目根目录
3.支持管理不同的 Python 版本
缺点
仓库不是很完善,需要搭配 pip/Poetry 来使用
综上,作为包管理器是一个很好的选择,搭配pip/poetry使用可以大大简化开发,高效工作。
参考资料[1]只用来管理 Python 版本和虚拟环境,Miniconda 也是一个很好的选择
https://zhuanlan.zhihu.com/p/81321705
[2]Conda工具使用
https://www.jianshu.com/p/17288627b994
欢迎大家关注我的全新CSDN账号,将呈现细分化知识整理与精准导航,正在持续施工中。
导航页:
https://blog.csdn.net/weixin_42826353/article/details/107884463
本文由公众号技术实战派原创,遵照Creative-Course4.0协议发表。