Virtualenv的作用
Virtualenv用于創(chuàng)建獨(dú)立的Python環(huán)境,多個Python環(huán)境相互獨(dú)立,互不影響,它能夠:
- 在沒有權(quán)限的情況下安裝新套件
- 不同應(yīng)用可以使用不同的套件版本
- 套件升級不影響其他應(yīng)用
安裝
ubuntu下:
$ sudo apt-get install python-virtualenv
使用方法
創(chuàng)建虛擬環(huán)境
$ virtualenv [虛擬環(huán)境名稱]
例如,創(chuàng)建名字叫做ENV的虛擬環(huán)境
$ virtualenv ENV
默認(rèn)情況下,虛擬環(huán)境會依賴系統(tǒng)環(huán)境中的 site packages
,就是說系統(tǒng)中已經(jīng)安裝好的第三方package也會安裝在虛擬環(huán)境中,如果不想依賴這些package,那么在建立虛擬環(huán)境時可以加上參數(shù) --no-site-packages
,例如:
$ virtualenv --no-site-packages [虛擬環(huán)境名稱]
啟動虛擬環(huán)境
$ cd ENV $ source ./bin/activate
此時命令行會多一個(ENV),ENV為虛擬環(huán)境名稱,接下來所有模塊都只會安裝到該目錄中去。
退出虛擬環(huán)境
$ deactivate
虛擬環(huán)境下安裝Python套件
Virtualenv 附帶有pip安裝工具,因此需要安裝的套件可以直接運(yùn)行:
$ pip install [套件名稱]
如果沒有啟動虛擬環(huán)境,系統(tǒng)也安裝了pip工具,那么套件將被安裝在系統(tǒng)環(huán)境中,為了避免發(fā)生此事,可以在~/.bashrc文件中加上:
export PIP_REQUIRE_VIRTUALENV=true
或者讓在執(zhí)行pip的時候讓系統(tǒng)自動開啟虛擬環(huán)境:
export PIP_RESPECT_VIRTUALENV=true
Virtualenvwrapper
Virtaulenvwrapper是virtualenv的擴(kuò)展包,用于更方便管理虛擬環(huán)境,它可以做:
- 將所有虛擬環(huán)境整合在一個目錄下
- 管理(新增,刪除,復(fù)制)虛擬環(huán)境
- 切換虛擬環(huán)境
安裝
$ sudo easy_install virtualenvwrapper
此時還不能使用virtualenvwrapper,默認(rèn)virtualenvwrapper安裝在 /usr/local/bin
下面,實際上你需要運(yùn)行 virtualenvwrapper.sh
文件才行,先別急,打開這個文件看看,里面有安裝步驟,我們照著操作把環(huán)境設(shè)置好:
- 創(chuàng)建目錄用來存放虛擬環(huán)境
$ mkdir $HOME/.virtualenvs
- 在
~/.bashrc
中添加行:
export WORKON_HOME=$HOME/.virtualenvs
- 在
~/.bashrc
中添加行:
source /usr/local/bin/virtualenvwrapper.sh
- 運(yùn)行:
source ~/.bashrc
此時virtualenvwrapper就可以使用了:
- 列出虛擬環(huán)境列表
$ workon
也可以使用
$ lsvirtualenv
- 新建虛擬環(huán)境
$ mkvirtualenv [虛擬環(huán)境名稱]
- 啟動/切換虛擬環(huán)境
$ workon [虛擬環(huán)境名稱]
- 刪除虛擬環(huán)境
$ rmvirtualenv [虛擬環(huán)境名稱]
- 離開虛擬環(huán)境
$ deactivate
參考:
http://www.virtualenv.org/en/latest/
http://stackoverflow.com/questions/11372221/virtualenvwrapper-not-found
http://www.openfoundry.org/tw/tech-column/8516-pythons-virtual-environment-and-multi-version-programming-tools-virtualenv-and-pythonbrew
http://virtualenvwrapper.readthedocs.org/en/latest/index.html