virtualenv和virtualenvwrapper安裝與使用

virtualenv

我們在使用Python進行學習或者開發(fā)的時候,難免會遇到需要使用不同版本python或者依賴不同庫的情況,然后我們可能同時在系統(tǒng)里安裝了python2.x.x版本或者python3.x.x版本。
為了不讓各中版本的庫發(fā)生混亂,或者說讓不同的項目使用各自獨立的環(huán)境。此時,我們來介紹virtualenv,它可以在系統(tǒng)中建立多個不同并且相互不干擾的虛擬環(huán)境,為單個項目創(chuàng)建獨立的python虛擬環(huán)境。

安裝

首先我們從安裝講起,以 Mac OS 為例。這里我們需要使用pip包管理器,如果系統(tǒng)里沒有安裝pip的話可以使用下面的命令安裝:

sudo easy_install pip 

這樣就安裝好了pip,然后我們再使用pip安裝virtualenv。

pip install virtualenv

使用

1,創(chuàng)建虛擬環(huán)境
virtualenv /project/env27
#此命令表示在/project/目錄下創(chuàng)建了一個名為env27的虛擬環(huán)境。每個虛擬環(huán)境都包含一個獨立的env27/bin/python和env27/bin/pip

虛擬環(huán)境建立好之后,我們可以看到/project/env27目錄下自動生成了三個文件夾:

/bin    #包含一些在這個虛擬環(huán)境中可用的命令,以及開啟虛擬環(huán)境的腳本activate    
/include  #包含虛擬環(huán)境中的頭文件,包括Python的頭文件
/lib      #包含所有的依賴庫文件
2,創(chuàng)建指定解釋器版本的虛擬環(huán)境:
virtualenv -p python2.7 /project/env2.7   #解釋器為python2.7
virtualenv -p python3.4 /project/env3.4   #解釋器為python3.4

這樣我們在/project目錄下分別就建立了兩個python版本的虛擬環(huán)境

3,創(chuàng)建繼承第三方的虛擬環(huán)境

如果python已經(jīng)安裝了第三方庫,你希望在新的虛擬環(huán)境中也使用這些庫,那么可使用如下命令:

virtualenv --system-site-packages /project/env27

如果不想使用可使用如下命令:

virtualenv --no-site-packages /project/env27
4,啟動虛擬環(huán)境
source /project/env27/bin/activate
#這個命令會修改系統(tǒng)路徑$PATH,把env27/bin的路徑置于系統(tǒng)路徑之前source 命令表示更改當前的shell環(huán)境。
#啟動了虛擬環(huán)境之后,所有pip命令新安裝的第三方庫都將安裝在當前環(huán)境下,而不會影響系統(tǒng)環(huán)境或者其它虛擬環(huán)境。

此時已經(jīng)我們已經(jīng)啟動并進入到env27環(huán)境中了,現(xiàn)在我們可以安裝我們需要使用的庫了,比如我們想要安裝request庫:

pip install requests

這時候我們的env27環(huán)境中就有request庫了,而且不會和其他的環(huán)境相互干擾。

5,退出虛擬環(huán)境
deactivate
6,刪除虛擬環(huán)境

如果想要刪除env27虛擬環(huán)境,只要把/project/env27目錄下的 bin、include 和 lib 三個目錄刪掉就好了。

virtualenv 的一個最大的缺點就是,每次開啟虛擬環(huán)境之前要去虛擬環(huán)境所在目錄下的 bin 目錄下 source 一下 activate,這就需要我們記住每個虛擬環(huán)境所在的目錄。

virtualenvwrapper

為什么要使用Virtualenvwrapper?

上節(jié)講過virtualenv的缺點,而Virtaulenvwrapper,將所有的虛擬環(huán)境目錄全都集中起來,比如放到 ~/virtualenvs/,對不同的虛擬環(huán)境使用不同的目錄來管理。并且,它還省去了每次開啟虛擬環(huán)境時候的 source 操作,使得虛擬環(huán)境更加好用。

Virtaulenvwrapper是virtualenv的擴展包,用于更方便管理虛擬環(huán)境,比如它可以:將所有虛擬環(huán)境整合在一個目錄下、管理(新增,刪除,復制)虛擬環(huán)境、快速切換虛擬環(huán)境等等。

安裝

pip install virtualenvwrapper

不過,在 Mac OS X El Capitan 或以上版本可能會出現(xiàn)安裝報錯的情況,主要問題出在一個叫做 six 的包上。因此安裝的時候,可以采用如下方式:

sudo pip install virtualenvwrapper --ignore-installed six

配置:

安裝成功后, 在/usr/local/bin/目錄下會自動生成一個名為virtualenvwrapper.sh 的shell腳本文件,這個文件就是用來啟動virtualenvwrapper的。

使用如下命令可以啟動virtualenvwrapper:

source /usr/local/bin/virtualenvwrapper.sh

但是這樣非常麻煩,因為每次打開終端后必須要輸入這么長的命令才可以啟動它。那么,有什么辦法可以讓終端打開就自動啟動virtualenvwrapper呢?答案當然有。

因為virtualenvwrapper默認將所有的虛擬環(huán)境放在~/.virtualenvs目錄下進行管理,所以可以修改終端的配置文件,將環(huán)境變量 WORKON_HOME 來指定為虛擬環(huán)境的保存目錄。

首先在終端中執(zhí)行:

export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

然后運行:

source ~/.bash_profile

輸入上面的三行代碼就可以開始使用virtualenvwrapper了,但是每次打開終端都需要輸入上面的兩行代碼,所以我們可以把上面的代碼添加進終端配置文件中。

終端操作如下:

1,vim 打開~/.bash_profile

vim .~/.bash_profile

2,粘貼下面代碼到~/.bash_profile文件末尾,然后保存退出。

export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

完成以上配置文件的修改后,以后每次再啟動終端的時候virtualenvwrapper都會自動運行了。

注意:不同的shell的配置文件不同,我的Mac OS High Serria下的是~/.bash_profile

使用

1,創(chuàng)建虛擬環(huán)境
mkvirtualenv env27
#這樣我們就創(chuàng)建了一個名叫env27的虛擬環(huán)境,它被存放在 $WORKON_HOME/spider 目錄下
2,創(chuàng)建指定解釋器的虛擬環(huán)境
mkvirtualenv -p python2.7 env27
mkvirtualenv -p python3.4 env34
#這樣我們分別就建立了兩個python版本的虛擬環(huán)境
3,啟動虛擬環(huán)境
workon env27
4,切換虛擬環(huán)境
workon env27

可以通過以下命令查看當前python環(huán)境的版本

python --version
>>Python 2.7.6

再切換到3.4的環(huán)境

workon env34

查一下版本

python --version
>>Python 3.4.0

5,退出虛擬環(huán)境
deactivate
6,刪除虛擬環(huán)境
rmvirtualenv env27

到這里virtualenv 和 virtualenvwrapper的安裝和使用已經(jīng)講完了,個人強烈推薦直接安裝virtualenvwrapper,為學習和開發(fā)提升效率。

以上僅僅作為個人理解學習記錄,如有錯誤歡迎指正,更多詳細可以參考官方文檔。如需轉載,麻煩注明出處,謝謝。

參考來源:
聊聊 virtualenv 和 virtualenvwrapper 實踐
python------virtualenv&virtualenvwrapper的使用

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容