文中知識(shí)點(diǎn)學(xué)習(xí)自 : http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432712108300322c61f256c74803b43bfd65c6f8d0d0000
在開發(fā)Python應(yīng)用程序的時(shí)候银酬,系統(tǒng)安裝的Python3只有一個(gè)版本:3.4助析。所有第三方的包都會(huì)被pip安裝到Python3的site-packages目錄下。
如果我們要同時(shí)開發(fā)多個(gè)應(yīng)用程序省撑,那這些應(yīng)用程序都會(huì)共用一個(gè)Python道偷,就是安裝在系統(tǒng)的Python 3吩谦。如果應(yīng)用A需要jinja 2.7术徊,而應(yīng)用B需要jinja 2.6怎么辦藕届?
這種情況下挪蹭,每個(gè)應(yīng)用可能需要各自擁有一套“獨(dú)立”的Python運(yùn)行環(huán)境。virtualenv就是用來為一個(gè)應(yīng)用創(chuàng)建一套“隔離”的Python運(yùn)行環(huán)境休偶。
安裝:
$ sudo pip install virtualenv
使用:
1梁厉、創(chuàng)建項(xiàng)目目錄
$ mkdir virenv
$ cd virenv/
2、創(chuàng)建一個(gè)獨(dú)立的Python
運(yùn)行環(huán)境踏兜,命名為venv
$ virtualenv --no-site-packages venv
New python executable in /root/virenv/venv/bin/python
Installing setuptools, pip, wheel...done.
命令virtualenv
就可以創(chuàng)建一個(gè)獨(dú)立的Python
運(yùn)行環(huán)境词顾,我們還加上了參數(shù)--no-site-packages
,這樣碱妆,已經(jīng)安裝到系統(tǒng)Python
環(huán)境中的所有第三方包都不會(huì)復(fù)制過來肉盹,這樣,我們就得到了一個(gè)不帶任何第三方包的“干凈”的Python
運(yùn)行環(huán)境疹尾。
3上忍、進(jìn)入環(huán)境
新建的Python
環(huán)境被放到當(dāng)前目錄下的venv
目錄。有了venv
這個(gè)Python
環(huán)境航棱,可以用source
進(jìn)入該環(huán)境:
$ source venv/bin/activate
(venv) root@sate-z:~/virenv#
# 注意到命令提示符變了睡雇,有個(gè)(venv)前綴,表示當(dāng)前環(huán)境是一個(gè)名為venv的Python環(huán)境饮醇。
下面正常安裝各種第三方包它抱,并運(yùn)行python
命令
root@sate-z:~/virenv# pip install lxml
在venv
環(huán)境下,用pip
安裝的包都被安裝到venv
這個(gè)環(huán)境下朴艰,系統(tǒng)Python
環(huán)境不受任何影響观蓄。也就是說,venv
環(huán)境是專門針對myproject
這個(gè)應(yīng)用創(chuàng)建的祠墅。
退出當(dāng)前的venv
環(huán)境侮穿,使用deactivate
命令:
(venv) root@sate-z:~/virenv# deactivate
root@sate-z:~/virenv#
virtualenv
是如何創(chuàng)建“獨(dú)立”的Python
運(yùn)行環(huán)境的呢?原理很簡單:就是把系統(tǒng)Python
復(fù)制一份到virtualenv
的環(huán)境毁嗦,用命令source venv/bin/activate
進(jìn)入一個(gè)virtualenv
環(huán)境時(shí)亲茅,virtualenv
會(huì)修改相關(guān)環(huán)境變量,讓命令python
和pip
均指向當(dāng)前的virtualenv
環(huán)境。