pyenv,virtualenv,anaconda有什么区别?

cha*_* ly 110 python pip virtualenv anaconda pyenv

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

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

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

我的问题是:

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

您的例子将得到高度赞赏.

Wad*_*ams 114

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

pip:Python包管理器.

  • 你可能会认为它是pipruby gem命令的python等价物
  • pip 默认情况下不包含在python中.
  • 您可以使用自制软件安装Python ,它将自动安装pip:brew install python
  • 默认情况下,OSX的最终版本不包括pip.要将pip添加到mac系统的python版本,你可以sudo easy_install pip
  • 您可以使用PyPI找到并发布python包:Python包索引
  • requirements.txt文件与ruby相当 gemfile
  • 要创建需求文本文件, pip freeze > requirements.txt
  • 注意,此时,我们已经在我们的系统上安装了python,并且我们创建了一个requirements.txt文件,该文件概述了系统上已安装的所有python软件包.

pyenv:Python版本管理器

  • 从文档:pyenv可以让您轻松地在多个版本的Python之间切换.它简单,不引人注目,并遵循UNIX的单一用途工具的传统,它做得很好.这个项目是从rbenv和ruby-build分支出来的,并为Python修改过.
  • 很多人不愿意使用python3.
  • 如果您需要使用不同版本的python,pyenv可以轻松管理它.

virtualenv:Python环境管理器.

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

Anaconda:包管理员+环境经理+其他科学图书馆.

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

也可以看看:

  • 是否可以将其更新为包含在[pipenv](https://pipenv.readthedocs.io/en/latest/)中,因为它似乎是Python.org官方推荐的Python打包工具? (3认同)
  • 现在可能现在可以使用刷新,请参阅/sf/answers/3435890671/ (2认同)

cha*_* ly 8

简单的比喻:

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

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

在 ruby​​ 中,我们并不真正需要虚拟环境,因为捆绑器会处理它。virtual env 和 bundler 都很棒,但是,它们有不同的解决方案来解决相同的问题。

  • Pipenv 与捆绑器类似。点到宝石。 (2认同)