Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果我使用virtualenv,为什么要使用vagrant?_Python_Django_Virtual Machine_Vagrant_Virtualenv - Fatal编程技术网

Python 如果我使用virtualenv,为什么要使用vagrant?

Python 如果我使用virtualenv,为什么要使用vagrant?,python,django,virtual-machine,vagrant,virtualenv,Python,Django,Virtual Machine,Vagrant,Virtualenv,我读了这个问题,但我想知道相反的情况 我在UNIX/Linux环境(分别是MAC OSX和Ubuntu)中编程和部署,并使用VirtualNV保持环境隔离 事实上,我从未遇到过任何问题,但我看到一些人和很多教程建议一起使用它们,我想知道是否以及为什么我应该使用vagrant,有人能给我解释一下吗?virtualenv和Vagrant的区别在于virtualenv只涉及单独的Python安装,而Vagrant则涉及整个机器 virtualenv将Python解释器和Python依赖项隔离在一台机

我读了这个问题,但我想知道相反的情况

我在UNIX/Linux环境(分别是MAC OSX和Ubuntu)中编程和部署,并使用VirtualNV保持环境隔离


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

virtualenv和Vagrant的区别在于virtualenv只涉及单独的Python安装,而Vagrant则涉及整个机器

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

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

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


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

感谢@Simeon的解释