pyenv,virtualenv,anaconda有什么区别?

时间:2016-07-06 06:31:11

标签: python pip anaconda virtualenv pyenv

我是一名试图学习python的红宝石程序员。我是pyenv的家庭,因为它就像是来自rbenv的复制和粘贴。 Pyenv有助于在一个系统中拥有多个版本的python,并且可以在不触及系统敏感部分的情况下隔离python。

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

现在我对这两个pyenv和virtualenv的目的感到困惑。 更糟糕的是,在pyenv中有一个virtualenv插件。

我的问题是:

  • pyenv和virtualenv有什么区别?
  • 在pyenv和virtualenv中使用pip命令有什么不同吗?
  • 这个pyenv virutalenv做了什么?

您的解释将受到高度赞赏。

2 个答案:

答案 0 :(得分:92)

编辑:此处值得一提的是pip,因为condapip具有与此主题相关的相似点和不同点

pip:Python包管理器。

  • 你可能会认为pip是ruby gem命令的python等价物
  • 默认情况下,
  • 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 docs pyenv可让您轻松切换多个版本的Python。它简单,不引人注目,并遵循UNIX的单一用途工具的传统,它做得很好。这个项目是从rbenv和ruby-build分支出来的,并为Python修改过。
  • 很多人hesitate to use python3
  • 如果您需要使用不同版本的python,pyenv可让您轻松管理。

virtualenv: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 docs Anaconda 4.2.0包含一个简单的Python安装(2.7.12,3.4.5和/或3.5.2)以及超过100个预先构建和测试的科学和包含NumPy,Pandas,SciPy,Matplotlib和IPython的分析Python软件包,通过简单的conda install <packagename>
  • 提供了620多个软件包
  • 作为网络开发者,我没有使用过Anaconda。包括所有套餐在内的约3GB。
  • 有一个精简的miniconda版本,看起来它可能比使用pip + virtualenv更简单,但我没有亲自使用它的经验。
  • 虽然conda允许您安装软件包,但这些软件包与PyPI软件包是分开的,因此您可能仍需要使用pip,具体取决于您需要安装的软件包类型。

另见:

答案 1 :(得分:4)

简单的比喻:

  • pyenv〜rbenv
  • pip〜捆绑器
  • 虚拟环境〜rvm中的gemset。无需gemset,即可直接由捆绑器管理。

由于我使用python3,因此我更喜欢名为venv的python3内置虚拟环境。 venv 简单易用。我建议您阅读其官方文档。该文档简短明了。

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