virtualenv用于創(chuàng)建獨(dú)立的Python環(huán)境,多個(gè)Python相互獨(dú)立,互不影響,它能夠:
1. 在沒(méi)有權(quán)限的情況下安裝新套件
2. 不同應(yīng)用可以使用不同的套件版本
3. 套件升級(jí)不影響其他應(yīng)用
安裝
sudo apt-get install python-virtualenv
使用方法
[code]
virtualenv [虛擬環(huán)境名稱]
如,創(chuàng)建**ENV**的虛擬環(huán)境
virtualenv ENV
默認(rèn)情況下,虛擬環(huán)境會(huì)依賴系統(tǒng)環(huán)境中的site packages,就是說(shuō)系統(tǒng)中已經(jīng)安裝好的第三方package也會(huì)安裝在虛擬環(huán)境中,如果不想依賴這些package,那么可以加上參數(shù) --no-site-packages建立虛擬環(huán)境
virtualenv --no-site-packages [虛擬環(huán)境名稱]
啟動(dòng)虛擬環(huán)境
cd ENV
source ./bin/activate
注意此時(shí)命令行會(huì)多一個(gè)(ENV),ENV為虛擬環(huán)境名稱,接下來(lái)所有模塊都只會(huì)安裝到該目錄中去。
退出虛擬環(huán)境
deactivate
在虛擬環(huán)境安裝Python套件
Virtualenv 附帶有pip安裝工具,因此需要安裝的套件可以直接運(yùn)行:
pip install [套件名稱]
如果沒(méi)有啟動(dòng)虛擬環(huán)境,系統(tǒng)也安裝了pip工具,那么套件將被安裝在系統(tǒng)環(huán)境中,為了避免發(fā)生此事,可以在~/.bashrc文件中加上:
export PIP_REQUIRE_VIRTUALENV=true
或者讓在執(zhí)行pip的時(shí)候讓系統(tǒng)自動(dòng)開(kāi)啟虛擬環(huán)境:
export PIP_RESPECT_VIRTUALENV=true
Virtualenvwrapper
Virtaulenvwrapper是virtualenv的擴(kuò)展包,用于更方便管理虛擬環(huán)境,它可以做:
1. 將所有虛擬環(huán)境整合在一個(gè)目錄下
2. 管理(新增,刪除,復(fù)制)虛擬環(huán)境
3. 切換虛擬環(huán)境
4. ...
安裝
sudo easy_install virtualenvwrapper?
此時(shí)還不能使用virtualenvwrapper,默認(rèn)virtualenvwrapper安裝在/usr/local/bin下面,實(shí)際上你需要運(yùn)行virtualenvwrapper.sh文件才行,先別急,打開(kāi)這個(gè)文件看看,里面有安裝步驟,我們照著操作把環(huán)境設(shè)置好。
創(chuàng)建目錄用來(lái)存放虛擬環(huán)境
mkdir $HOME/.virtualenvs
在~/.bashrc中添加行: export WORKON_HOME=$HOME/.virtualenvs
在~/.bashrc中添加行:source /usr/local/bin/virtualenvwrapper.sh
運(yùn)行: source ~/.bashrc
此時(shí)virtualenvwrapper就可以使用了。
列出虛擬環(huán)境列表
workon
也可以使用
lsvirtualenv
新建虛擬環(huán)境
mkvirtualenv [虛擬環(huán)境名稱]
啟動(dòng)/切換虛擬環(huán)境
workon [虛擬環(huán)境名稱]
刪除虛擬環(huán)境
rmvirtualenv [虛擬環(huán)境名稱]
離開(kāi)虛擬環(huán)境
deactivate
------------------------------------------------------------------------------------------------------------------------------------------------------------
virtualenv通過(guò)創(chuàng)建獨(dú)立Python開(kāi)發(fā)環(huán)境的工具, 來(lái)解決依賴、版本以及間接權(quán)限
問(wèn)題. 比如一個(gè)項(xiàng)目依賴Django1.3 而當(dāng)前全局開(kāi)發(fā)環(huán)境為Django1.7, 版本跨度過(guò)大, 導(dǎo)致不兼容使項(xiàng)目無(wú)法正在運(yùn)行, 使用virtualenv可以解決這些問(wèn)題.
virtualenv創(chuàng)建一個(gè)擁有自己安裝目錄的環(huán)境, 這個(gè)環(huán)境不與其他虛擬環(huán)境共享庫(kù), 能夠方便的管理python版本和管理python庫(kù)
1. 安裝Virtualenv
使用pip安裝Virtualenv, 使用過(guò)python的都應(yīng)該知道pip包管理神器吧, 即使不知道, 網(wǎng)站也有大把的教程, 不過(guò)推薦查看官方安裝指南
$ pip install virtualenv
//或者由于權(quán)限問(wèn)題使用sudo臨時(shí)提升權(quán)限
$ sudo pip install virtualenv
2. virtualenv基本使用
現(xiàn)在開(kāi)始使用virtualenv管理python環(huán)境
?? Test git:(master) ? virtualenv ENV? #創(chuàng)建一個(gè)名為ENV的目錄, 并且安裝了ENV/bin/python, 創(chuàng)建了lib,include,bin目錄,安裝了pip
New python executable in
Installing setuptools, pip...done.
?? Test git:(master) ? cd ENV
?? ENV git:(master) ? ll
drwxr-xr-x? 14 andrew_liu? staff? 476 12? 8 08:49 bin
drwxr-xr-x?? 3 andrew_liu? staff? 102 12? 8 08:49 include
drwxr-xr-x?? 3 andrew_liu? staff? 102 12? 8 08:49 lib
lib,所有安裝的python庫(kù)都會(huì)放在這個(gè)目錄中的lib/pythonx.x/site-packages/下
bin,bin/python是在當(dāng)前環(huán)境是使用的python解釋器
如果在命令行中運(yùn)行virtualenv --system-site-packages ENV, 會(huì)繼承/usr/lib/python2.7/site-packages下的所有庫(kù), 最新版本virtualenv把把訪問(wèn)全局site-packages作為默認(rèn)行為
default behavior.
2.1. 激活virtualenv
#ENV目錄下使用如下命令
?? ENV git:(master) ? source ./bin/activate? #激活當(dāng)前virtualenv
(ENV)?? ENV git:(master) ? #注意終端發(fā)生了變化
#使用pip查看當(dāng)前庫(kù)
(ENV)?? ENV git:(master) ? pip list
pip (1.5.6)
setuptools (3.6)
wsgiref (0.1.2) #發(fā)現(xiàn)在只有這三個(gè)
pip freeze? #顯示所有依賴
pip freeze > requirement.txt? #生成requirement.txt文件
pip install -r requirement.txt? #根據(jù)requirement.txt生成相同的環(huán)境
2.2. 關(guān)閉virtualenv
使用下面命令
$ deactivate
2.3. 指定python版本
可以使用-p PYTHON_EXE選項(xiàng)在創(chuàng)建虛擬環(huán)境的時(shí)候指定python版本
#創(chuàng)建python2.7虛擬環(huán)境
?? Test git:(master) ? virtualenv -p /usr/bin/python2.7 ENV2.7
Running virtualenv with interpreter /usr/bin/python2.7
New python executable in ENV2.7/bin/python
Installing setuptools, pip...done.
#創(chuàng)建python3.4虛擬環(huán)境
?? Test git:(master) ? virtualenv -p /usr/local/bin/python3.4 ENV3.4
Running virtualenv with interpreter /usr/local/bin/python3.4
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.4'
New python executable in ENV3.4/bin/python3.4
Also creating executable in ENV3.4/bin/python
Installing setuptools, pip...done.
到此已經(jīng)可以解決python版本沖突問(wèn)題和python庫(kù)不同版本的問(wèn)題
3. 其他
3.1. 生成可打包環(huán)境
某些特殊需求下,可能沒(méi)有網(wǎng)絡(luò), 我們期望直接打包一個(gè)ENV, 可以解壓后直接使用, 這時(shí)候可以使用virtualenv -relocatable指令將ENV修改為可更改位置的ENV
#對(duì)當(dāng)前已經(jīng)創(chuàng)建的虛擬環(huán)境更改為可遷移
?? ENV3.4 git:(master) ? virtualenv --relocatable ./
Making script ./bin/easy_install relative
Making script ./bin/easy_install-3.4 relative
Making script ./bin/pip relative
Making script ./bin/pip3 relative
Making script ./bin/pip3.4 relative
3.2. 獲得幫助
$ virtualenv -h
當(dāng)前的ENV都被修改為相對(duì)路徑, 可以打包當(dāng)前目錄, 上傳到其他位置使用
這并不能使虛擬環(huán)境跨平臺(tái)使用
4. 參考鏈接
virtualenv官方文檔? http://virtualenv.readthedocs.org/en/latest/virtualenv.html
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
