只用来管理 Python 版本和虚拟环境,Miniconda 也是一个很好的选择

Anaconda 是一个面向数据科学的 Python 发行版,它打包了 Conda、Python 和一堆机器学习和人工智能相关和经常使用的包,并且还能够用来安装一些非 Python 编写的库。对于科学计算相关的用途很是方便,开箱即用。看起来很适合实验室或是学校机房使用……html

对于常规的 Python 开发来讲,Anaconda 过重了,并且主要面向科学计算领域,可是精简版的 Miniconda 倒是一个很好的虚拟环境和依赖管理工具。python

更重要的是 Miniconda 兼容三个主流操做系统,并且不一样平台使用一样的命令和接口(Conda 4.6 以上)。这大概算是我的偏好,由于我总在写东西给别人看,因此老是喜欢兼容主流操做系统而且接口统一的解决方案。并且另外一方面 pyenv、virtualenvwrapper、direnv 等等相关替代工具都没有原生 Windows 支持。 git

Miniconda 是什么

先来理清几个概念:github

  • Conda:包、依赖和环境管理器。
  • Anaconda(某种蟒蛇的名字):面向数据科学的 Python 发行版,包含 conda、conda-build、Python 和 100+ 经常使用的数据科学经常使用的库及其依赖。
  • Miniconda:精简版的 Anaconda,也是一个 Python 发行版,只包含 conda、Python 和一些基本的包。

相关资源:shell

Miniconda 基本用法

首先你须要访问下载页面下载对应操做系统的安装包进行安装,Python 版本选择你想做为默认选项(base version)的版本。而后打开 Windows 下的 Anaconda Prompt 或是 Anaconda Powershell Prompt,Linux 或 macOS 直接使用终端程序。app

下面是一些关键用法介绍,详细内容能够阅读 Conda 文档机器学习

建立虚拟环境

使用 conda create 命令建立虚拟环境,使用 --name 选项(-n)指定虚拟环境名称:工具

$ conda create --name foo复制代码

使用 conda info 命令查看当前环境名称、Python 版本、虚拟环境文件夹位置、Conda 版本等等各类信息:学习

$ conda info复制代码

使用 --envs 选项(-e)查看全部已建立的虚拟环境。在列出的虚拟环境中,使用星号(*)标识的是当前激活的虚拟环境:ui

$ conda info --envs复制代码

激活虚拟环境

使用 conda activate 命令激活虚拟环境,添加虚拟环境名做为参数:

$ conda activate foo复制代码

激活之后会在命令行提示器前显示虚拟环境名称,好比:

(foo) $复制代码

不添加虚拟环境名称,就会从新激活基础环境(base):

$ conda activate复制代码

设置虚拟环境的 Python 版本

在建立虚拟环境的时候,可使用 python 参数指定 Python 版本。假设你使用的 Miniconda 默认版本是 Python 3.7,若是你想建立一个 Python 2.7 的虚拟环境,使用下面的命令:

$ conda create --name snakes python=2.7复制代码

你能够在虚拟环境名加上标识方便识别 Python 版本,好比:

$ conda create --name snakes-py27 python=2.7复制代码

搭配 pip / Poetry 来管理依赖

由于 Conda 安装库的时候默认使用 Conda 本身的仓库,这里包含的 720 多个库除了流行的 Python 包外大可能是数据科学相关的包。因此,更好的选择是使用官方 PyPI 仓库,这样能够确保你使用到最近更新的包,并且不会出现有些包找不到的状况。

咱们要作的就是只用 Conda 的 Python 版本和虚拟环境管理功能,不用它来管理依赖。依赖管理(安装、卸载、更新等)仍然使用 pip 进行,或是进一步搭配 pip-tools 来管理依赖。

你须要在 conda 环境内使用下面的命令安装 pip:

$ conda install pip复制代码

或是统一使用下面的命令格式建立虚拟环境:

$ conda create --name bar pip复制代码

这样在执行 pip 命令时会使用虚拟环境内的 pip,而不是系统全局的 pip。这样作的反作用是会产生几个多余的依赖。

除此以外,你也能够搭配使用 Poetry。Poetry 默认会自动建立虚拟环境,因此须要关闭 Poetry 自动建立虚拟环境的设定,执行下面的命令便可:

$ poetry config settings.virtualenvs.create false复制代码

总结

按照我目前掌握到的信息,Miniconda 的优缺点总结以下:

优势

  • 替代 pyenv+virtualenv+virtualenvwrapper 的多个工具组合
  • 相似 virtualenvwrapper,能够在任意位置激活虚拟环境,而不是必须在项目根目录
  • 支持管理不一样的 Python 版本
  • 兼容性很好,支持 Windows

缺点

  • conda 和 pip 组合存在潜在的冲突,但状况在改善
  • conda 和 Poetry 组合存在潜在的冲突
  • 在 Windows 下,须要使用专用的命令行程序
  • 依赖管理比较弱,须要搭配 pip/Poetry 来使用

既然一个 Miniconda 就能很好的胜任 Python 版本管理和虚拟环境管理的任务,为何要用 pyenv+virtualenv+virtualenvwrapper 呢?遗憾的就是依赖管理功能不够完善,和 pip/Poetry 搭配使用则可能会有潜在的冲突。因此,推荐能接受 Conda+pip/Poetry 这种搭配的人使用;推荐使用 Python 作数据科学相关工做的人使用。

对比之下,最稳定的解决方案大概仍是 virtualenv+pip+其余工具……

(若是你发现了错误描述、有不一样见解和想要补充的信息,欢迎评论。)

(3)

相关文章
相关标签/搜索