python:pythonbrew 和 virtualenv 有什么区别?

标签 python ruby rvm virtualenv pythonbrew

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

最佳答案

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

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

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

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

Pythonbrew 的一个优势是它创建的 Python 环境是真正且完全独立的。它们不会被任何在底层基础 Python 安装中搞砸的东西所污染,因为没有底层基础安装。这不适用于 virtualenv 环境。如果你创建了一个 virtualenv Python,然后你以某种方式搞砸了它上面的基本 Python 实例(例如,在以 root 身份登录时意外删除了基本 Python 的“站点”目录的一部分),你将搞砸任何基于 virtualenv 的环境也在那个 Python 上。

不过,virtualenv 也有自己的优势。可能最大的优点是它是轻量级的。由于 Pythonbrew 从头开始​​编译 Python,因此要创建其环境之一,创建 Pythonbrew Python 环境需要一些时间。相比之下,创建 virtualenv Python 环境确实很快。

事实上,您可以将它们一起使用。这是您可能想要这样做的一种情况。

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

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

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

关于python:pythonbrew 和 virtualenv 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8256723/

相关文章:

Ruby 版本在终端和 bash 中有所不同

python - sqlalchemy 外键关系属性

python - 在 SQLAlchemy 中按关系过滤

ruby - 替换字符串中的变量

ruby - Ubuntu Launcher 未使用 RVM

ruby - 使用 overcommit 和 Github Desktop 时出错

python - 使用指定列表计算 Pandas 中的出现次数

python - 如何识别扭曲的客户端?

ruby-on-rails - ControllerTest 错误,无法找到 'id' = 的事务

Ruby:检查 URI 是否为 HTTPS?