2013-03-08 58 views
5

這是一個Django和Python,也許只是一個普通的Web開發問題。Django使用虛擬環境進行Web開發的最佳實踐?

使用virtualenv vs vagrant與虛擬盒等有什麼區別...?

我有點困惑,什麼時候用哪一個:/我一直在使用虛擬ENV這整個時間和不同的項目,創建新的虛擬環境.... 這是做正確的方式? 每個項目一個virtualenv?

我真的不知道何時何地漂泊不定的用武之地......我應該設立流浪漢,然後使用的virtualenv?

這可能是一個愚蠢的問題,但...如果我要在這個項目上與其他人一起工作。他們是否也必須建立一個虛擬env?只是爲了協作?

那豈不是更有意義的是,我們在我們本地機器的所有工作,然後將其推到主分支?我只是有點困惑....我覺得我做的一切都是錯的......

感謝您的答覆大家!

回答

8

Virtualenv設置了一個本地沙箱供您安裝Python模塊。

Vagrant是一款用於創建虛擬機的自動化工具。

VirtualBox是用於運行虛擬機,就像那些流浪創造一個自由的,開放源碼環境。

Virtualenv真的是你需要在本地機器上進行沙盒開發的所有東西。我在工作中使用Vagrant來自動創建虛擬機。通過這種方式,即將進入項目的新開發人員基本上只有零配置才能開始工作。

如果要與其他開發者合作,他們不需要做任何以上的在您的Django項目工作,但如果有很多參與的配置不能用PIP來完成和一個requirements.txt,那麼你可以看看Vagrant來緩解一些自動化。

但是你在你的假設是正確的,你都可以只是一個本地分支工作,並推回回購。其他一切都只是結冰。

+0

我明白了......所以,你會需要每個項目太1個流浪漢? – user805981 2013-03-08 03:03:50

+0

它只是取決於。我們使用Vagrant來實現自動化環境。我不用它在家裏做自由職業項目,我只是使用virtualenv。我不是Vagrant的粉絲,它有一些問題。 – Brandon 2013-03-08 03:05:06

+0

好的。那麼你會爲不同的項目有多個虛擬框?或者在我們的虛擬環境配置中只有一個虛擬框加載? – user805981 2013-03-08 03:08:07

5

Virtualenv是一個python結構,它包含一系列與系統軟件包不同的特定軟件包。您的操作系統附帶的Python版本或者您單獨安裝的Python軟件包是一個「系統軟件包」。

Virtualbox是完全不同的 - 它是一個虛擬機,一個盒子裏的整個操作系統。

我對流浪者不熟悉。

所有你需要的是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環境,所以即使你使用它,你還在你的本地計算機上工作。

+0

很酷。那麼我們每個系統只需要一個虛擬盒子?我能想到的唯一方法就像多人(venv)共用一輛車(虛擬箱)。但每次只有一個人可以駕駛它......我不知道我的邏輯是否正確... – user805981 2013-03-08 03:09:59

+0

您爲每個項目初始化一個新的virtualbox,並且您需要爲每臺想要的計算機初始化virtualbox用於開發,可能還有生產服務器。但是所有的「virtualbox」都是一個軟件包集合,還有一個在它們之間切換的簡單方法。因此,這意味着您必須安裝軟件依賴於您想要使用軟件包的軟件包。 – 2013-03-08 07:02:53

+0

哎呀,我把虛擬盒子和env搞混了。是的,每個系統只需要一個虛擬機(虛擬機箱)。 – 2013-03-09 16:03:31

1

我們使用的virtualenv Ubuntu的虛擬機。這裏的原因:

  • 的virtualenv允許我們對一個給定的操作系統實例
  • 在虛擬機上爲我們的Python開發模仿使用Ubuntu dekstop孤立的Python環境中,它的外觀時,這是在服務器上部署的像也是Ubuntu。這意味着我們正確理解外部OS包的依賴性和配置。當您使用OSX或Windows進行開發和部署Linux時,您不會輕鬆獲得此信息。