文中知識點學(xué)習(xí)自 : http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432712108300322c61f256c74803b43bfd65c6f8d0d0000
在開發(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)境。
安裝:
$ sudo pip install virtualenv
使用:
1、創(chuàng)建項目目錄
$ mkdir virenv
$ cd virenv/
2、創(chuàng)建一個獨立的Python
運行環(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)建一個獨立的Python
運行環(huán)境,我們還加上了參數(shù)--no-site-packages
,這樣,已經(jīng)安裝到系統(tǒng)Python
環(huán)境中的所有第三方包都不會復(fù)制過來,這樣,我們就得到了一個不帶任何第三方包的“干凈”的Python
運行環(huán)境。
3、進入環(huán)境
新建的Python
環(huán)境被放到當(dāng)前目錄下的venv
目錄。有了venv
這個Python
環(huán)境,可以用source
進入該環(huán)境:
$ source venv/bin/activate
(venv) root@sate-z:~/virenv#
# 注意到命令提示符變了,有個(venv)前綴,表示當(dāng)前環(huán)境是一個名為venv的Python環(huán)境。
下面正常安裝各種第三方包,并運行python
命令
root@sate-z:~/virenv# pip install lxml
在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) root@sate-z:~/virenv# deactivate
root@sate-z:~/virenv#
virtualenv
是如何創(chuàng)建“獨立”的Python
運行環(huán)境的呢?原理很簡單:就是把系統(tǒng)Python
復(fù)制一份到virtualenv
的環(huán)境,用命令source venv/bin/activate
進入一個virtualenv
環(huán)境時,virtualenv
會修改相關(guān)環(huán)境變量,讓命令python
和pip
均指向當(dāng)前的virtualenv
環(huán)境。