56. virtualenv

在開發(fā)Python應(yīng)用程序的時候叠骑,系統(tǒng)安裝的Python3只有一個版本:3.4铸董。所有第三方的包都會被pip安裝到Python3的site-packages目錄下祟印。

如果我們要同時開發(fā)多個應(yīng)用程序,那這些應(yīng)用程序都會共用一個Python袒炉,就是安裝在系統(tǒng)的Python 3旁理。如果應(yīng)用A需要jinja 2.7樊零,而應(yīng)用B需要jinja 2.6怎么辦我磁?

這種情況下,每個應(yīng)用可能需要各自擁有一套“獨立”的Python運行環(huán)境驻襟。virtualenv就是用來為一個應(yīng)用創(chuàng)建一套“隔離”的Python運行環(huán)境夺艰。

首先,我們用pip安裝virtualenv:
$ pip3 install virtualenv
然后沉衣,假定我們要開發(fā)一個新的項目郁副,需要一套獨立的Python運行環(huán)境,可以這么做:

第一步豌习,創(chuàng)建目錄:

Mac:~ michael$ mkdir myproject
Mac:~ michael$ cd myproject/
Mac:myproject michael$```
第二步存谎,創(chuàng)建一個獨立的Python運行環(huán)境,命名為venv:

Mac:myproject michael$ virtualenv --no-site-packages venv
Using base prefix '/usr/local/.../Python.framework/Versions/3.4'
New python executable in venv/bin/python3.4
Also creating executable in venv/bin/python
Installing setuptools, pip, wheel...done.```
命令virtualenv就可以創(chuàng)建一個獨立的Python運行環(huán)境肥隆,我們還加上了參數(shù)--no-site-packages既荚,這樣,已經(jīng)安裝到系統(tǒng)Python環(huán)境中的所有第三方包都不會復(fù)制過來栋艳,這樣恰聘,我們就得到了一個不帶任何第三方包的“干凈”的Python運行環(huán)境。
新建的Python環(huán)境被放到當(dāng)前目錄下的venv目錄吸占。有了venv這個Python環(huán)境晴叨,可以用source進(jìn)入該環(huán)境:

Mac:myproject michael$ source venv/bin/activate
(venv)Mac:myproject michael$```
注意到命令提示符變了,有個(venv)前綴矾屯,表示當(dāng)前環(huán)境是一個名為venv的Python環(huán)境兼蕊。

下面正常安裝各種第三方包,并運行python命令:

(venv)Mac:myproject michael$ pip install jinja2
...
Successfully installed jinja2-2.7.3 markupsafe-0.23
(venv)Mac:myproject michael$ python myapp.py
...```
在venv環(huán)境下件蚕,用pip安裝的包都被安裝到venv這個環(huán)境下孙技,系統(tǒng)Python環(huán)境不受任何影響。也就是說骤坐,venv環(huán)境是專門針對myproject這個應(yīng)用創(chuàng)建的绪杏。

退出當(dāng)前的venv環(huán)境,使用deactivate命令:

(venv)Mac:myproject michael$ deactivate 
Mac:myproject michael$```
此時就回到了正常的環(huán)境纽绍,現(xiàn)在pip或python均是在系統(tǒng)Python環(huán)境下執(zhí)行蕾久。

完全可以針對每個應(yīng)用創(chuàng)建獨立的Python運行環(huán)境,這樣就可以對每個應(yīng)用的Python環(huán)境進(jìn)行隔離拌夏。

virtualenv是如何創(chuàng)建“獨立”的Python運行環(huán)境的呢僧著?原理很簡單履因,就是把系統(tǒng)Python復(fù)制一份到virtualenv的環(huán)境,用命令source venv/bin/activate進(jìn)入一個virtualenv環(huán)境時盹愚,virtualenv會修改相關(guān)環(huán)境變量栅迄,讓命令python和pip均指向當(dāng)前的virtualenv環(huán)境。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末皆怕,一起剝皮案震驚了整個濱河市毅舆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌愈腾,老刑警劉巖憋活,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異虱黄,居然都是意外死亡悦即,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門橱乱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辜梳,“玉大人,你說我怎么就攤上這事泳叠∽髅椋” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵析二,是天一觀的道長粉洼。 經(jīng)常有香客問我,道長叶摄,這世上最難降的妖魔是什么属韧? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮蛤吓,結(jié)果婚禮上宵喂,老公的妹妹穿的比我還像新娘。我一直安慰自己会傲,他們只是感情好锅棕,可當(dāng)我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著淌山,像睡著了一般裸燎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上泼疑,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天德绿,我揣著相機(jī)與錄音,去河邊找鬼。 笑死移稳,一個胖子當(dāng)著我的面吹牛蕴纳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播个粱,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼古毛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了都许?” 一聲冷哼從身側(cè)響起稻薇,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎梭稚,沒想到半個月后颖低,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡弧烤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蹬敲。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片暇昂。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖伴嗡,靈堂內(nèi)的尸體忽然破棺而出急波,到底是詐尸還是另有隱情,我是刑警寧澤瘪校,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布澄暮,位于F島的核電站,受9級特大地震影響阱扬,放射性物質(zhì)發(fā)生泄漏泣懊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一麻惶、第九天 我趴在偏房一處隱蔽的房頂上張望馍刮。 院中可真熱鬧,春花似錦窃蹋、人聲如沸卡啰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽匈辱。三九已至,卻和暖如春杀迹,著一層夾襖步出監(jiān)牢的瞬間亡脸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留梗掰,地道東北人嵌言。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像及穗,于是被迫代替她去往敵國和親摧茴。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容