Python:Python和虚拟人有什么区别?

2024-05-11 12:49:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,我计划学习django。我对ruby(不是rails)有一些经验,我熟悉RVM但是我不理解pythonbrewvirtualenv之间的区别。我知道pythonbrew是对RVM的模仿,但我认为virtualenv已经在做RVM所做的事情(反之亦然,pythonbrew已经在做RVM所做的事情)。有人能解释一下吗?也许能提供一些具体的例子/用法来帮助我理解它。非常感谢!


Tags: django用法virtualenv经验事情计划例子rails
3条回答

Python brew用于构建和安装,可能类似于某些buildbot。我不太熟悉。 Virtualenv主要用于,当您得到不同版本的python时,或者您希望在不干扰系统版本的情况下尝试一些包。


好吧,这让人陶醉

创建独立的python环境(使用virtualenv):

pythonbrew venv init
pythonbrew venv create proj
pythonbrew venv list
pythonbrew venv use proj
pythonbrew venv delete proj

来自http://pypi.python.org/pypi/pythonbrew/

我以前从没听说过Python,但我知道(也爱)virtualenv。

Virtualenv用于创建单独的环境,基于机器上的python安装。也就是说,如果我有python2.7,我可以创建许多独立的python2.7环境,但是我不能创建python2.6环境。

根据this(我通过google找到)的说法,Pythonbrew似乎专注于安装其他python版本。所以我想您应该使用'brew安装py2.6和2.7,然后使用virtualenv为它们创建环境。

或者,看起来,“brew也可以使用virtualenv创建环境。

为什么不同的python解释器并不是一个孤立的环境。

每个python安装都有一组包(我认为放在“site packages”中)。如果您安装了一个新包,它将被添加到这个集合中,并可用于所有python代码。

如果您有一个基于Django0.96构建的项目,并且希望使用Django1.3启动一个新项目,那么这可能是一个问题。如果只是更新Django的系统版本,那么也会影响旧项目。

使用virtualenvs,您可以用Django1.3创建一个环境,用Django0.96创建另一个环境,两者都是python2.7。如果您可以在python2.6中运行旧项目,在python2.7中运行新项目,您也可以这样做,但是接下来两个使用Django Trunk的不同版本的项目呢?

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

  • 构建一个或多个完整的Python自包含版本,每个版本都存储在本地 在你的主目录下。您可以用这种方式构建多个版本的Python。
  • 在Python版本之间轻松切换。

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

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

Pythonbrew的一个优点是它创建的Python环境是真正的、完全的、自包含的。它们不会被底层基础Python安装中的任何错误所污染,因为没有底层基础安装。virtualenv环境并非如此。如果您创建一个virtualenv Python,然后以某种方式将它上面的基本Python实例搞砸(例如,在以根用户身份登录时意外删除了基本Python的“s it e”目录的一部分),那么您也会搞砸任何基于该Python的virtualenv环境。

然而,virtualenv有其自身的优势。可能最大的优点是它很轻。由于Pythonbrew从头开始编译Python,要创建其中一个环境,创建Pythonbrew Python环境需要一些时间。相比之下,创建virtualenv Python环境非常快。

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

  • 您的基本系统使用Python2.6。
  • 您需要安装Python2.7。
  • 不管出于什么原因,您不能(或者不想)在系统范围内安装Python2.7, 与Python2.6并行。

在这种情况下,可以使用Pythonbrew在主目录下安装一个基本的Python 2.7,它不会与其他地方安装的任何内容冲突。然后,可以创建一个或多个基于Pythonbrew安装的2.7 Python的轻量级virtualenv Python环境。例如,您可以使用virtualenv以这种方式启动Python 2.7的短期测试环境。

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

相关问题 更多 >