安裝 virtualenv和virtualfish的話,就不要安裝anaconda,可能會出錯。python
首先來聊一下 virtualenv
是個什麼鬼。nginx
在使用 Python
開發的過程當中,工程一多,不免會碰到不一樣的工程依賴不一樣版本的庫的問題;亦或者是在開發過程當中不想讓物理環境裏充斥各類各樣的庫,引起將來的依賴災難。此時,咱們須要對於不一樣的工程使用不一樣的虛擬環境來保持開發環境以及宿主環境的清潔。這裏,就要隆重介紹 virtualenv
,一個能夠幫助咱們管理不一樣 Python
環境的絕好工具。virtualenv
能夠在系統中創建多個不一樣而且相互不干擾的虛擬環境。另外,值得一提的是,在 virtualenv
的虛擬環境中使用 pip
安裝依賴還能夠繞過某些系統的權限設置,由於畢竟不須要向系統目錄寫入數據嘛~~git
那麼,virtualenv
是怎麼運行的呢?github
首先從安裝講起,這裏假設已經安裝了 pip
,若是沒有安裝 pip
的話,請自行出門谷歌(好吧,我是好人,附上pip
官方文檔連接)。以後就能夠用 pip
來直接安裝 virtualenv
了。固然,這裏多是須要使用 sudo
提高權限的,畢竟是在宿主物理環境裏安裝。以下命令中 sudo
省略,若有需求請自行添加。sql
pip install virtualenv
好了如今你擁有了 virtualenv
虛擬環境管理器。shell
接下來講使用。api
好比咱們想要作一點奇怪的事情,寫一個腳本去抓取某個網站的信息,咱們暫且把這個工程叫作 spider
吧。這個工程裏須要訪問網絡,咱們打算使用爲人類編寫的網絡訪問庫 requests
,可是咱們又不想在宿主環境中安裝這個包。讓咱們開始吧。bash
假設咱們把這個工程放在 /path/to/project/spider/
目錄下,而且這裏咱們把虛擬環境直接放在工程目錄下。首先,咱們在這個目錄下創建一個虛擬環境。網絡
virtualenv /path/to/project/spider
這樣,虛擬環境就創建好了。此時能夠看到,在這個目錄下面會有三個目錄被創建:app
bin
include
lib
其中,bin
目錄中包含一些在這個虛擬環境中可用的命令,以及開啓虛擬環境的腳本 activate
;include
中包含虛擬環境中的頭文件,包括 Python
的頭文件;lib
中就是一些依賴庫啦~~
固然,如今咱們尚未進入到虛擬環境中。激活虛擬環境只須要一條命令。
source /path/to/project/spider/bin/activate
此時就能夠咱們就已經在虛擬環境中啦。
接下來安裝工程須要的 requests
庫。
pip install requests
搞定!
這時候在虛擬環境裏就有了 requests
庫,宿主環境中則不會被幹擾。
那麼如何退出虛擬環境嘞?退出就更簡單啦,只須要下面一個命令就搞定啦。
deactivate
此時就回到了進入虛擬環境以前,一切都好像沒發生過。多年之後,若是你忘記了虛擬環境的位置,一切就真的沒發生過了 = =
補充一句,若是想要刪除虛擬環境,只要把這個目錄下的 bin
、include
和 lib
三個目錄刪掉就行了。
(注意: virtualenvwrapper和virtualfish依賴virtualenv)
爲神馬須要 virtualenvwrapper
?這要從 virtualenv
提及。
上一節結束的時候說,若是忘記了虛擬環境的位置,一切就真的沒發生過了。雖然是句玩笑,不過真的會發生哦~
virtualenv
的一個最大的缺點就是,每次開啓虛擬環境以前要去虛擬環境所在目錄下的 bin
目錄下 source
一下 activate
,這就須要咱們記住每一個虛擬環境所在的目錄。
一種可行的解決方案是,將全部的虛擬環境目錄全都集中起來,好比放到 ~/virtualenvs/
,並對不一樣的虛擬環境使用不一樣的目錄來管理。virtualenvwrapper
正是這樣作的。而且,它還省去了每次開啓虛擬環境時候的 source
操做,使得虛擬環境更加好用。
一樣,從安裝開始。
安裝 virtualenvwrapper
也可使用 pip
的方式。須要加入 sudo
的話請自行加入哦~
pip install virtualenvwrapper
$ sudo -E pip install virtualenvwrapper # 有些時候可能須要加上 -H,保留 $HOME 環境變量不改變
(加上 -E 能夠在切換用戶時保持環境變量不切換,若是提示)
不過,在 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'
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.5
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv source /usr/local/bin/virtualenvwrapper.sh
因爲每次都須要執行這兩部操做,咱們能夠將其寫入終端的配置文件中。例如,若是使用 bash
,則添加到 ~/.bashrc
(或者 )中;若是使用 zsh
,則添加到 ~/.zshrc
中。這樣每次啓動終端的時候都會自動運行,終端其中以後 virtualenvwrapper
就能夠用啦。
利用 virtualenvwrapper
,咱們可使用下面的命令輕鬆建立一個虛擬環境。
$ mkvirtualenv spider # 這裏建立的是系統默認的python版本的環境,用 which python 查看默認版本。 建議用下面的命令來制定版本。
$ mkvirtualenv -p /Users/heliclei/.localpython/bin/python3.4 env34 # 指定創建3.4的python環境
$ mkvirtualenv -p /Users/heliclei/.localpython/bin/python2.7 env27 # 指定創建2.7的python環境
以後咱們就有了一個叫作 spider
的虛擬環境。它被存放在 $WORKON_HOME/spider
目錄下。
新建虛擬環境以後會自動激活虛擬環境。若是咱們平時想要進入某個虛擬環境,能夠用下面的命令。
$ workon spider #切換到 spider 的python環境
$ workon env34 #切換到 python 3.4 的python環境
$ workon env27 #****
這也就是爲何環境變量中存放虛擬環境的目錄爲啥叫作 WORKON_HOME
。順便說一句,workon
後面但是能夠支持用 tab
自動補全的喲。
一樣,離開虛擬環境,可使用。
deactivate
另外,刪除虛擬環境也同樣簡單。
rmvirtualenv spider
到這裏,virtualenv
和 virtualenvwrapper
的基本使用就介紹完了,須要瞭解更多用法,能夠參考官方文檔喲。但願這兩個工具可以幫助小夥伴們在工做中提升效率喲~~