我是python新手,我计划学习django.我对ruby(不是rails)有一些经验,对100也很熟悉,但我不理解101和102之间的区别.我知道101是RVM的仿制品,但我认为102已经在做RVM做的事情了(反之亦然,101已经在做RVM做的事情了).请有人解释一下,或者提供一些具体的例子/用法来帮助我理解它.非常感谢!
我是python新手,我计划学习django.我对ruby(不是rails)有一些经验,对100也很熟悉,但我不理解101和102之间的区别.我知道101是RVM的仿制品,但我认为102已经在做RVM做的事情了(反之亦然,101已经在做RVM做的事情了).请有人解释一下,或者提供一些具体的例子/用法来帮助我理解它.非常感谢!
Pythonbrew类似于Ruby的rvm:它是一个shell函数,允许您:
您构建的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环境的速度非常快.
事实上,你可以一起使用它们.这里有一种情况,你可能想这样做.
在这种情况下,可以使用Pythonbrew安装一个基本的Python 2.7 under your home directory,它与其他地方安装的任何东西都不会冲突.然后,您可以创建一个或多个基于PythonNew安装的2.7 Python的轻量级VirtualEnvironment.例如,可以使用virtualenv以这种方式为Python2.7构建短期测试环境.
我怀疑大多数人真的这么做.(我不知道)但是你没有理由不能.