python - 如果我使用 virtualenv,为什么还要使用 vagrant?

标签 python django virtual-machine vagrant virtualenv

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

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

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

最佳答案

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

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

  • Vagrant 指定整台机器:它允许您指定 Linux 发行版、要安装的包以及安装项目要采取的操作。因此,如果您想在该机器上启动一个包含多个 Python 项目的 Vagrant box,您仍然需要使用 virtualenv 来分离 Python 依赖项。

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

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

关于python - 如果我使用 virtualenv,为什么还要使用 vagrant?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27069182/

相关文章:

python - 在 pandas 中找到 groupby 后百分比总和的差异

python - python中的tcp套接字客户端如何与uwsgi对话?

python - Django 1.8 TEMPLATE_DIRS 被忽略

javascript - Emacs、Django 模板和脚本 block

visual-studio-2008 - 您可以设置 Visual Studio 以部署到虚拟机吗?

python - Google AppEngine 库导入

python - Python、Django 和标准输出的奇怪问题

django - 我可以在 Django 模板中使用别名字段名称吗?

comparison - ISO、虚拟机、VMware、VMX文件和VMDK文件之间的关系

hadoop - 如何找到 Cent OS 虚拟机的实际 IP 地址?