在Ubuntu系統中,系統通常會默認安裝python2.x和3.x,像我近期買的阿里雲ECS默認安裝了2.7.2和3.5.2,全部pip安裝的第三方包都會被放在默認的site-apckages目錄下。html
若是咱們在同一臺機器上同時開發多個應用程序,問題一:python的版本問題,不一樣程序可能須要不一樣的版本;問題二:須要的不一樣第三方包管理,若是都放在一塊兒總感受不太好,強迫症。python
若是能夠爲每個應用程序開闢一個獨立的python運行環境就行了,因此就有了 virtualven。django
sudo apt-get update //更新軟件源中的全部軟件列表 sudo apt-get upgrade //對照列表,更新已安裝的軟件
pip install virtualenv //不討論pip和pip3問題,
sudo mkdir myproject cd myproject
virtualenv -p /usr/bin/python3.5 --no-site-packages venv
通常項目的虛擬環境命名爲venv。參數解釋:app
source venv/bin/activate
經過source命令進入虛擬環境,注意到命令提示符有所變化,前面多了一個(venv),表示當前環境是一個名爲venv的Python環境。網站
pip install django
在venv環境下,用pip安裝的包都被安裝到venv這個環境下,系統Python環境不受任何影響。也就是說,venv環境是專門針對myproject這個應用建立的。ui
deactivate
回到正常系統環境後,再使用pip安裝的第三方包就會放在系統python環境中。阿里雲
原理很簡單,就是把系統Python複製一份到virtualenv的環境,用命令source venv/bin/activate進入一個virtualenv環境時,virtualenv會修改相關環境變量,讓命令python和pip均指向當前的virtualenv環境。因此想要建立虛擬環境,系統應該先安裝該版本的python環境。url
在項目打包移植時能夠拋棄虛擬環境(通常很大),利用命令生成項目所引用的第三方包,在項目部署時新建虛擬環境,從新下載這些第三方包便可。code
pip list //查看當前環境中安裝的第三方庫 pip freeze > requirements.txt //導出當前環境第三方庫信息 pip install -r requirements.txt //移植機器從新安裝第三方庫
virtualenv爲應用程序提供了隔離的Python運行環境,解決了不一樣應用間多版本的衝突問題。若是一臺機子上有太多太多的項目,能夠考慮使用virtualenvwrapper來統一管理。htm
Python最強的IDE——PyCharm在建立項目時會自動建立虛擬環境,安裝第三方包能夠經過左上角file-settings-project interpreter,點擊"+"號,搜索第三方包直接安裝就好。
virtualenv - 廖雪峯的官方網站:virtualenv
python虛擬環境:virturlenv
本文版權歸做者AlvinZH和博客園全部,歡迎轉載和商用,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利.