这是一个Django和Python,可能只是一个普通的Web开发问题。
使用virtualenv与vagrant vs virtual box等之间的区别是什么?
我对何时使用哪一个感到困惑:/我一直在使用虚拟环境并为不同的项目创建新的虚拟环境.... 这是正确的方法吗? 每个项目一个virtualenv?
我不确定流浪汉何时何地发挥作用......我应该设置流浪汉,然后使用virtualenv?
这可能是一个愚蠢的问题但是......如果我和其他人一起做这个项目的话。他们是否也必须建立虚拟环境?只是为了合作?
我们在本地机器上工作然后将其推入主分支更有意义吗?我有点困惑......我觉得我做错了......
感谢所有人的回复!
答案 0 :(得分:8)
Virtualenv为您安装了一个本地沙箱,用于安装Python模块。
Vagrant是一款用于创建虚拟机的自动化工具。
VirtualBox是一个免费的开源环境,用于运行虚拟机,例如Vagrant创建的虚拟机。
Virtualenv真的是你需要在本地机器上进行沙盒开发。我们在工作中使用Vagrant来自动创建VM。这样,进入项目的新开发人员基本上没有任何配置可以开始工作。
如果您正在与其他开发人员合作,他们需要来执行上述任何操作来处理您的Django项目,但是如果涉及到很多配置,则不能用pip和requirements.txt完成,然后你可以看看Vagrant来简化一些自动化。
但是你的假设是正确的,你可以在本地分支上工作并推回回购。其他一切都只是结冰。
答案 1 :(得分:5)
Virtualenv是一个python构造,它包含一组特定的包,与您的系统包分开。您的操作系统附带的Python及其软件包的版本或单独安装的软件包是“系统软件包”。
Virtualbox完全不同 - 它是一个虚拟机,一个整箱操作系统。
我不熟悉Vagrant。
你需要的只是virtualenv。为每个项目创建一个新的virtualenv(它们非常轻量级!)您需要这样做,因为virtualenv的重点是隔离项目所需的那些软件包的确切包和版本。然后激活virtualenv并使用pip install
来安装所需的软件包,大概从Django本身开始。
获得所需的所有软件包后,使用pip freeze > requirements.txt
创建一个名为requirements.txt的文件,该文件记录您决定使用的所有软件包。
当其他人在您的项目上进行协作时,他们可以启动virtualenv,将代码拉入其中,然后运行pip install -r requirements.txt
来复制您的环境。他们甚至可以修改requirements.txt,通过版本控制系统将其推送给您,您可以自己运行pip install -r requirements.txt
来修改您的环境以匹配他们的更改。
这一切都是必不可少的,因为如果没有virtualenv,例如,在您的计算机上有一个需要Django 1.4的项目和一个需要Django 1.5的项目的问题变得非常复杂。
Virtualenv不是一个完整的操作系统,只是一个python环境,所以即使你使用它,你仍然在使用你的本地机器。
答案 2 :(得分:1)
我们使用virtualenv 和一个Ubuntu虚拟机。原因如下:
答案 3 :(得分:0)
重要的一点是虚拟机是可移植的。您可以拍摄快照并将其轻松部署到其他位置。通过Vagrant和Ansible的组合,您可以自动化远程部署。