如果我使用virtualenv,为什么我应该使用vagrant?

时间:2014-11-21 19:49:32

标签: python django virtual-machine vagrant virtualenv

我读了这个问题Do I need to use virtualenv with Vagrant?,但我想知道相反的情况。

我编程并部署到UNIX / Linux环境(分别是MAC OSX和Ubuntu),我使用virtualenv来保持环境隔离。

实际上我从来没有遇到过任何问题,但是我看到一些人和许多建议一起使用它们的教程,我想知道是否以及为什么要使用流浪汉,有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:24)

virtualenv和Vagrant之间的区别在于virtualenv只是关于单独的Python安装,而Vagrant是关于整个机器的。

  • virtualenv 在一台计算机上隔离Python解释器和Python依赖项,因此您可以使用自己的依赖项同时安装多个Python项目。但是对于机器的其余部分,virtualenv并没有做任何事情:你仍然拥有使用Mac OS X / Linux软件包管理器安装的全局依赖项/软件包,这些是在virtualenvs之间共享的。

  • Vagrant 指定整个计算机:它允许您指定Linux发行版,要安装的程序包以及安装项目时要采取的操作。因此,如果您想在该计算机上启动包含多个Python项目的Vagrant框,您仍然可以使用virtualenv来保持Python依赖项的独立性。

例如,Mac OS X上的开发人员和Ubuntu Linux上的开发人员可以使用virtualenv来安装他们的Python项目,但他们需要使用Vagrant在本地启动同一台机器(例如,Linux发行版)匹配已部署的服务器)以运行完全相同的Linux版本,并在其上安装相同的软件包并使用相同的Python项目安装。

因此,回答你的问题,使用Vagrant的原因是它允许你在本地创建一个安装了精确软件包的机器,而virtualenv只关注Python依赖项。