pyenv、virtualenv、anaconda 有什么区别?

What is the difference between pyenv, virtualenv, anaconda?

我是一名 ruby 程序员,正在努力学习 python。我对 pyenv 非常熟悉,因为它就像是 rbenv 的复制和粘贴。 Pyenv 有助于允许在系统中拥有多个版本的 python,并且还可以在不接触系统敏感部分的情况下隔离 python。

我想每个 python 安装都带有 pip 包。我仍然不明白的是,有很多好的 python 库建议使用这个 virtualenv 和 anaconda。我什至可以找到 pyenv 的 virtualenv 插件。

现在我对这两个 pyenv 和 virtualenv 的用途感到困惑。 更糟的是在 pyenv 里面有一个 virtualenv 插件。

我的问题是:

非常感谢您的示例解释。

编辑:这里也值得一提 pip,因为 condapip 具有与该主题相关的相同点和不同点.

pip:Python 包管理器。

  • 您可能会认为 pip 相当于 python ruby gem 命令
  • 默认情况下,
  • pip 不包含在 python 中。
  • 您可以使用 homebrew 安装 Python,这将自动安装 pip:brew install python
  • OSX 的最终版本默认不包含 pip。要将 pip 添加到 mac 系统的 python 版本,您可以 sudo easy_install pip
  • 您可以使用 PyPI: The Python Package Index
  • 查找和发布 python 包
  • requirements.txt 文件相当于 ruby gemfile
  • 要创建需求文本文件,pip freeze > requirements.txt
  • 请注意,此时,我们已经在我们的系统上安装了 python,并且我们创建了一个 requirements.txt 文件,其中概述了已安装的所有 python 软件包你的系统。

pyenv: Python 版本管理器

  • From the docspyenv 让您可以轻松地在 Python 的多个版本之间切换。它简单、不引人注意,并遵循 UNIX 的单一用途工具的传统,即做好一件事。这个项目是从 rbenv 和 ruby-build 派生出来的,并针对 Python.
  • 进行了修改
  • 很多人hesitate to use python3
  • 如果您需要使用不同版本的 python,pyenv 可让您轻松管理。

虚拟环境:Python环境管理器。

  • From the docs: 要解决的基本问题是依赖关系和版本,以及间接权限。假设您有一个应用程序需要 LibFoo 版本 1,而另一个应用程序需要版本 2。您如何同时使用这两个应用程序?如果您将所有内容安装到 /usr/lib/python2.7/site-packages(或您平台的标准位置),很容易导致您无意中升级了不应升级的应用程序。
  • 要创建 virtualenv,只需调用 virtualenv ENV,其中 ENV 是放置新虚拟环境的目录。
  • 要初始化 virtualenv,您需要 source ENV/bin/activate。要停止使用,只需调用 deactivate.
  • 激活 virtualenv 后,您可以通过 运行 pip install -r 针对项目的 requirements.txt 文件安装工作区的所有包要求。

Anaconda:包管理器 + 环境管理器 + 其他科学库。

  • From the docsAnaconda 4.2.0 包括 Python(2.7.12、3.4.5、and/or 3.5.2)的简单安装和更新超过 100 个预构建和测试的科学和分析 Python 包,包括 NumPy、Pandas、SciPy、Matplotlib 和 IPython,还有超过 620 个包可通过简单 conda install <packagename>
  • 作为网络开发人员,我还没有使用过 Anaconda。它是 ~3GB,包括所有包。
  • 有一个精简的 miniconda 版本,这似乎比使用 pip + virtualenv 更简单,尽管我没有使用它的经验个人。
  • 虽然 conda 允许您安装包,但这些包与 PyPI 包是分开的,因此您可能仍需要额外使用 pip,具体取决于您需要安装的包类型。

另请参阅:

  • conda vs pip vs virtualenv(来自 anaconda 的文档部分)
  • the difference between pip and conda(计算器)
  • (计算器)

简单类比:

  • pyenv ~ rbenv
  • pip ~ 捆绑器
  • 虚拟环境 ~ rvm 中的 gemset。这可以在没有 gemset 的情况下直接由 bundler 管理。

因为我使用 python3,所以我更喜欢名为 venv 的 python3 内置虚拟环境。 venv简单易用。我建议你阅读它的官方文档。该文档简短明了。

在 ruby 中,我们实际上并不需要虚拟环境,因为捆绑程序会处理它。 virtual env 和 bundler 都很棒,但是,他们有不同的解决方案来解决同样的问题。

简单说明:https://docs.conda.io/projects/conda/en/latest/commands.html#conda-vs-pip-vs-virtualenv-commands

如果你以前使用过pipvirtualenv,你可以使用conda执行所有相同的操作。

  • Pip 是一个包管理器
  • virtualenv 是一个环境管理器
  • Conda 兼具