【问题标题】:Why should i use vagrant if i use virtualenv?如果我使用 virtualenv,为什么要使用 vagrant?
【发布时间】:2015-01-20 01:27:16
【问题描述】:
【问题讨论】:
标签:
python
django
virtual-machine
vagrant
virtualenv
【解决方案1】:
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 版本,其上安装了相同的包和相同的 Python 项目安装。
所以,为了回答你的问题,使用 Vagrant 的原因是它允许你在本地创建一个安装了确切包的机器,而 virtualenv 只关心 Python 依赖项。