我是python新手,我计划学习django.我对ruby(不是rails)有一些经验,对100也很熟悉,但我不理解101102之间的区别.我知道101RVM的仿制品,但我认为102已经在做RVM做的事情了(反之亦然,101已经在做RVM做的事情了).请有人解释一下,或者提供一些具体的例子/用法来帮助我理解它.非常感谢!

推荐答案

Pythonbrew类似于Ruby的rvm:它是一个shell函数,允许您:

  • 构建一个或多个完整的Python自包含版本,每个版本都存储在本地
  • 在Python版本之间轻松切换.

您构建的Python彼此完全隔离,并且与系统范围内安装的任何版本的Python完全隔离.

Virtualenv与之类似,但并不完全相同.它创建了一个Python虚拟环境,从概念上讲,它位于一些现有Python安装(通常是系统范围的安装,但并不总是如此)之上.默认情况下,在Unix平台(和Mac)上,它会创建指向各种Python库模块的符号链接,因此您实际上是在与"真正的"底层Python实现共享这些模块.但是,virtualenv有自己的"bin"目录和"site packages"目录.在Python虚拟环境中安装的任何额外内容都只能在该环境中使用.

Pythonbrew的一个优点是,它创建的Python环境是真正且完全独立的.它们不会被底层基本Python安装中出错的任何东西所污染,因为根本没有底层基本Python安装.对于VirtualEnvironment来说,情况并非如此.如果您创建了一个virtualenv Python,然后不知怎么搞砸了它上面的基本Python实例(例如,在以root身份登录时意外删除了基本Python"site"目录的一部分),那么您也会搞砸基于该Python的任何VirtualEnvironment.

然而,virtualenv有自己的优势.最大的优点可能是它很轻.由于Pythonbrew从零开始编译Python,因此要创建其环境之一,创建Pythonbrew Python环境需要一些时间.相比之下,创建virtualenv Python环境的速度非常快.

事实上,你可以一起使用它们.这里有一种情况,你可能想这样做.

  • 您的基本系统使用Python 2.6.
  • 您需要安装Python 2.7.
  • 无论出于何种原因,您都无法(或不想)在系统范围内安装Python 2.7,

在这种情况下,可以使用Pythonbrew安装一个基本的Python 2.7 under your home directory,它与其他地方安装的任何东西都不会冲突.然后,您可以创建一个或多个基于PythonNew安装的2.7 Python的轻量级VirtualEnvironment.例如,可以使用virtualenv以这种方式为Python2.7构建短期测试环境.

我怀疑大多数人真的这么做.(我不知道)但是你没有理由不能.

Ruby相关问答推荐

ruby:比较两个单词并从中提取不常见的字母

如何返回此 OOP Ruby 代码最后一行中的变量?

在 Ruby 中,如何编写一个可以与 &:symbol 一起使用的简单方法?

如何从 url 获取文件扩展名?

判断Ruby中的目录是否为空

如何在 Ruby 的 RestClient gem 中设置超时?

Ruby 的 Object#taint 和 Object#trust 方法是什么?

如何在Ruby中从字符串中go 除前导和尾随引号

复制文件,在 Ruby 中根据需要创建目录

为什么在Ruby中用空格分隔的两个字符串连接在一起?

用mustache迭代数组

如何让 Ruby 解析时间,就好像它在不同的时区一样?

在 Ruby 中重写 to_s 方法不好吗?

我应该如何在哈希上使用 each_with_object?

Ruby 异常 - 为什么是else?

map、each 和 collect 有什么区别?

为什么 Ruby 文档中的方法前面有一个井号?

为什么在安装 gem 时出现权限被拒绝错误?

为依赖于环境变量的代码编写规范的最佳方法是什么?

Ruby:如何将数组数组连接成一个