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

Jil*_*loc 13 python django virtual-machine virtualenv vagrant

我读过这个问题我是否需要使用带有Vagrant的virtualenv?但我想知道相反的情况.

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

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

Sim*_*ser 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依赖项.