聊聊 virtualenv 和 virtualenvwrapper 實踐

各位 Python 的小夥伴確定多多少少接觸過 virtualenv。本文將介紹 virtualenv 以及如何更科學更優雅地使用 virtualenv。api

virtualenv

首先來聊一下 virtualenv 是個什麼鬼。bash

在使用 Python 開發的過程當中,工程一多,不免會碰到不一樣的工程依賴不一樣版本的庫的問題;亦或者是在開發過程當中不想讓物理環境裏充斥各類各樣的庫,引起將來的依賴災難。此時,咱們須要對於不一樣的工程使用不一樣的虛擬環境來保持開發環境以及宿主環境的清潔。這裏,就要隆重介紹 virtualenv,一個能夠幫助咱們管理不一樣 Python 環境的絕好工具。virtualenv 能夠在系統中創建多個不一樣而且相互不干擾的虛擬環境。另外,值得一提的是,在 virtualenv 的虛擬環境中使用 pip 安裝依賴還能夠繞過某些系統的權限設置,由於畢竟不須要向系統目錄寫入數據嘛~~網絡

那麼,virtualenv 是怎麼運行的呢?app

安裝

首先從安裝講起,這裏假設已經安裝了 pip,若是沒有安裝 pip 的話,請自行出門谷歌(好吧,我是好人,附上pip官方文檔連接)。以後就能夠用 pip 來直接安裝 virtualenv 了。固然,這裏多是須要使用 sudo 提高權限的,畢竟是在宿主物理環境裏安裝。以下命令中 sudo 省略,若有需求請自行添加。ide

pip install virtualenv

好了如今你擁有了 virtualenv 虛擬環境管理器。工具

使用

接下來講使用。網站

好比咱們想要作一點奇怪的事情,寫一個腳本去抓取某個網站的信息,咱們暫且把這個工程叫作 spider 吧。這個工程裏須要訪問網絡,咱們打算使用爲人類編寫的網絡訪問庫 requests,可是咱們又不想在宿主環境中安裝這個包。讓咱們開始吧。code

假設咱們把這個工程放在 /path/to/project/spider/ 目錄下,而且這裏咱們把虛擬環境直接放在工程目錄下。首先,咱們在這個目錄下創建一個虛擬環境。ip

virtualenv /path/to/project/spider

這樣,虛擬環境就創建好了。此時能夠看到,在這個目錄下面會有三個目錄被創建:開發

  • bin

  • include

  • lib

其中,bin 目錄中包含一些在這個虛擬環境中可用的命令,以及開啓虛擬環境的腳本 activateinclude 中包含虛擬環境中的頭文件,包括 Python 的頭文件;lib 中就是一些依賴庫啦~~

固然,如今咱們尚未進入到虛擬環境中。激活虛擬環境只須要一條命令。

source /path/to/project/spider/bin/activate

此時就能夠咱們就已經在虛擬環境中啦。

接下來安裝工程須要的 requests 庫。

pip install requests

搞定!

這時候在虛擬環境裏就有了 requests 庫,宿主環境中則不會被幹擾。

那麼如何退出虛擬環境嘞?退出就更簡單啦,只須要下面一個命令就搞定啦。

deactivate

此時就回到了進入虛擬環境以前,一切都好像沒發生過。多年之後,若是你忘記了虛擬環境的位置,一切就真的沒發生過了 = =

補充一句,若是想要刪除虛擬環境,只要把這個目錄下的 binincludelib 三個目錄刪掉就行了。

virtualenvwrapper

爲神馬須要 virtualenvwrapper?這要從 virtualenv 提及。

上一節結束的時候說,若是忘記了虛擬環境的位置,一切就真的沒發生過了。雖然是句玩笑,不過真的會發生哦~

virtualenv 的一個最大的缺點就是,每次開啓虛擬環境以前要去虛擬環境所在目錄下的 bin 目錄下 source 一下 activate,這就須要咱們記住每一個虛擬環境所在的目錄。

一種可行的解決方案是,將全部的虛擬環境目錄全都集中起來,好比放到 ~/virtualenvs/,並對不一樣的虛擬環境使用不一樣的目錄來管理。virtualenvwrapper 正是這樣作的。而且,它還省去了每次開啓虛擬環境時候的 source 操做,使得虛擬環境更加好用。

安裝

一樣,從安裝開始。

安裝 virtualenvwrapper 也可使用 pip 的方式。須要加入 sudo 的話請自行加入哦~

pip install virtualenvwrapper

不過,在 Mac OS X El Capitan 上可能會出現安裝報錯的狀況,主要問題出在一個叫作 six 的包上。所以安裝的時候,能夠採用以下方式。

pip install virtualenvwrapper --ignore-installed six

如今,咱們就擁有了一個能夠管理虛擬環境的神器。

使用

首先,須要對 virtualenvwrapper 進行配置。它須要指定一個環境變量,叫作 WORKON_HOME,而且須要運行一下它的初始化工具 virtualenvwrapper.sh,這個腳本在 /usr/local/bin/ 目錄下。WORKON_HOME 就是它將要用來存放各類虛擬環境目錄的目錄,這裏咱們能夠設置爲 ~/.virtualenvs

export WORKON_HOME='~/.virtualenvs'
source /usr/local/bin/virtualenvwrapper.sh

因爲每次都須要執行這兩部操做,咱們能夠將其寫入終端的配置文件中。例如,若是使用 bash,則添加到 ~/.bashrc 中;若是使用 zsh,則添加到 ~/.zshrc 中。這樣每次啓動終端的時候都會自動運行,終端其中以後 virtualenvwrapper 就能夠用啦。

利用 virtualenvwrapper,咱們可使用下面的命令輕鬆建立一個虛擬環境。

mkvirtualenv spider

以後咱們就有了一個叫作 spider 的虛擬環境。它被存放在 $WORKON_HOME/spider 目錄下。

新建虛擬環境以後會自動激活虛擬環境。若是咱們平時想要進入某個虛擬環境,能夠用下面的命令。

workon spider

這也就是爲何環境變量中存放虛擬環境的目錄爲啥叫作 WORKON_HOME。順便說一句,workon 後面但是能夠支持用 tab 自動補全的喲。

一樣,離開虛擬環境,可使用。

deactivate

另外,刪除虛擬環境也同樣簡單。

rmvirtualenv spider

結束

到這裏,virtualenvvirtualenvwrapper 的基本使用就介紹完了,須要瞭解更多用法,能夠參考官方文檔喲。但願這兩個工具可以幫助小夥伴們在工做中提升效率喲~~

相關文章
相關標籤/搜索