vietualenv

vietualenv是一個用來建立一個 虛擬 pythin環境的工具,可以不受原本系統內的函式庫版本不同造成相依性混亂的影響。 虛擬環境不用root就能安裝套件,每個專專案間相同的套件可以使用不同版本,且升級套件時不會影響到其他專案。

準備安裝

要使用easy_install工具來安裝virtualenv,所以要先取得這個工具。( 由 setuptools

系統是Fedora/CentOS/Redhat/openSUSE 使用:

$yum install python-setuptools

安裝

終端機輸入:

$easy_install virtualenv

建立一個虛擬環境:

virtualenv [要建立的虛擬環境(專案)名稱]

如以下會建立一個名為ENV的虛擬環境:

$ virtualenv ENV

這將會建立 ENV/lib/pythonX.X/site-packages,就是這個虛擬環境的套件庫。

這還會建立ENV/bin/python,python的解譯器,這是專屬於這個虛擬環境的,當你在這個環境使用 python(包含在code開頭打 #!/path/to/ENV/bin/python),都會使用這個。

預設在建立虛擬環境的時候會依賴系統現有的套件,如果想建立 套件完全獨立 的環境可以加上參數 --no-site-packages

$virtualenv --no-site-packages [要建立的虛擬環境(專案)名稱]

要指定使用的python版本可以加上 `` –python=pythonx.x``參數。

範例:

$virtualenv --no-site-packages [要建立的虛擬環境(專案)名稱] --python=python2.7

可以設定相關的環境變量`` VIRTUALENV_DISTRIBUTE``。

啟動

建立好之後先進入資料夾:

::
$cd ENV

接著用這個指令啟動

$ source bin/activate

這指令會改變你的$PATH ,把可執行的指令換成使用虛擬環境 bin/ 下現有的指令。

如果你直接使用bin/ 底下的執行檔執行(像是 path/to/env/bin/pip or /path/to/env/bin/python script.py) 那就可以不用。

啟動後終端機指令入端會變成:

(ENV).....$

在虛擬環境中想安裝套件可以使用它附帶,python的 pip 套件安裝工具。

(ENV)...$pip install [package]

如果原本系統內也有pip,要先 啟動(activate) 虛擬環境,否則安裝套件的行為會變成安裝到主系統。

要避免發生pip在進入虛擬環境時沒被使用可以設定 ~/.bashrc :

export PIP_REQUIRE_VIRTUALENV=true

要求 pip 一定要在虛擬環境中執行。

也可以用下面的設定,讓系統的 pip 自動使用啟動中的虛擬環境。

export PIP_RESPECT_VIRTUALENV=true

避免意外將套件安裝至主系統環境。

參考資料:

Python 的虛擬環境及多版本開發利器─Virtualenv 與 Pythonbrew

http://www.virtualenv.org/en/latest/