虛擬環境python
顧名思義,它是一個虛擬出來的環境。通俗的來說,這個虛擬的環境能夠理解爲一個「容器」,在這個容器中,咱們能夠只安裝咱們須要的依賴包,並且各個容器之間互相隔離,互不影響。web
咱們要學習Django,咱們經過這個環境搞一個Django的虛擬環境就行了。
Django也是一個很是流行的web框架。因爲Django的迭代更新很是快,也比較頻繁,因此有一些過期的東西須要丟棄掉,一些新的東西須要加進來,從而致使不一樣的版本之間不兼容。好比Django1.三、Django1.四、Django1.8之間就有很大的差別性。或者是說,以Python的版本舉例,如今工做中使用的Python版本與Python2.x和Python3.x兩種。django
假設要進行Python web開發,使用的是Django。手上還有兩個老項目A和B須要維護,而新項目C也正在開發中。這裏項目A使用的是django1.3,項目B使用的是django1.4,而新項目C使用的是Django1.8。那麼問題來了,如何同時在本地進行ABC這三個項目的開發和維護?
正常的模式多是這樣:如今在A項目上有一個BUG須要修復,因而,先刪除掉原來的django版本再安裝django1.3。
數分鐘後,bug修復完畢,好,如今進行新項目C的開發了,而後又要重複上面的故事。
好了,這仍是最理想的狀況。最不理想的狀況就是基於django的第三方依賴也是跟Django版本相關的,因而除了install和uninstall Django以外,還要uninstall和install其依賴,Orz,這特麼的就尷尬了...app
venv能作什麼呢?框架
VirtualEnv能夠搭建虛擬且獨立的python運行環境, 使得單個項目的運行環境與其它項目獨立起來。同時也能夠用於在一臺機器上建立多個獨立的python運行環境,VirtualEnvWrapper爲前者提供了一些便利的命令行上的封裝。ide
Virtualenv是一個很是好的virtual python environment builder,他最大的好處是,可讓每個python項目單獨使用一個環境,而不會影響python系統環境,也不會影響其餘項目的環境。學習
Virtualenv可用於建立獨立的Python環境,在這些環境裏面能夠選擇不一樣的Python版本或者不一樣的Packages,而且能夠在沒有root權限的狀況下在環境裏安裝新套件,互相不會產生任何的影響。ui