它是一個虛擬化,從電腦上獨立開闢出來的環境。通俗的來說,虛擬環境就是藉助虛擬機docker來把一部份內容獨立出來,咱們把這部分獨立出來的東西稱之爲 容器,在這個容器中,咱們能夠只安裝咱們開發須要依賴的包,各個容器之間相互隔離,互不影響。python
在使用 Python
開發的過程當中,工程一多,不免會碰到不一樣的工程依賴不一樣版本的庫的問題;亦或者是在開發過程當中不想讓物理環境裏充斥各類各樣的庫,引起將來的依賴災難。此時,咱們可使用虛擬環境 能夠搭建獨立的運行環境,使得單個項目的運行環境與其它項目互不影響。 docker
另外更值得一提的是:在虛擬環境中使用pip安裝,不須要向系統目錄中寫入數據,能夠繞過某些系統的權限設置。segmentfault
咱們能夠經過virtualenv
和virtualenvwrapper
來實現虛擬環境的搭建。
virtualenv
能夠經過python包管理工具pip進行安裝:python3.x
pip install virtualenv
亦或者使用anaconda命令安裝:bash
conda install virtualenv
virtualenv
virtualenv path/virtualenv_name
指定特定的python版本建立虛擬環境加上 -p
參數便可:app
virtualenv -p pythonx(.x) path/vituralenv_name
好比咱們建立 spider
工程使用 scrapy
框架去爬取某個網站的信息,咱們假設這個工程在路徑爲 ~/code/spider
,而且把虛擬環境直接放在 spider
工程目錄下。框架
virtualenv ~/code/spider/py3_virtualenv
這樣虛擬環境 py3_virtual
就建立好了。此時能夠看到,在spider/py3_virtualenv
目錄下面會有3個目錄被建立:scrapy
bin
中包含一些在這個虛擬環境中能夠用的命令,以及開啓虛擬環境的腳本activate;include
中包含虛擬環境中的頭文件,包括python的頭文件;lib
中就是一些開發所依賴的庫了....
此時,咱們僅僅是建立了虛擬環境,並無真正進入到虛擬環境中。ide
只須要開啓虛擬環境bin目錄中的腳本 activate
:工具
source virtualenv_path/bin/activate
對於spider工程來講,進入剛剛建立好的虛擬環境:
source ~/spider/py3_virtualenv/bin/activate
當終端命令的用戶前多出(虛擬環境名稱)後,表明進入虛擬環境。
接下來就能夠安裝咱們須要的 scrapy
庫了......
只須要經過如下命令便可退出當前虛擬環境:
deactivate
此時就回到了本機的物理環境中,若是你哪天忘記了虛擬環境的位置,那麼之後就沒法再次開啓該虛擬環境!
直接將改革建立虛擬環境的py3_virtualenv
文件夾 刪除掉便可.....
有了 virtualenv
爲何還要學習使用 virtualenvwrapper
?
上面 virtualenv
結束時候提到:若是忘記了虛擬環境的位置,那麼之後就沒法再次開啓該虛擬環境!
virtualenv
的最大的缺點就是,每次開啓虛擬環境以前,要在虛擬環境所在目錄的 bin
目錄下 開啓虛擬環境的腳本 activate
,所以咱們須要記住每一個虛擬環境所在的目錄。
而 virtualenvwrapper
是經過配置環境變量 WORKON_HOME
把全部的虛擬環境都放在環境變量 WORKON_HOME
目錄中,方便了虛擬環境的管理,且省去了每次開啓虛擬環境的 source
操做,並且不一樣虛擬環境之間能夠直接進行切換,使得虛擬環境更加好用。
virtualenvwrapper
能夠經過python包管理工具pip進行安裝:
pip install virtualenvwrapper
亦或者使用anaconda命令安裝:
conda install virtualenvwrapper
virtualenvwrapper
使用前 首先須要對 virtualenvwrapper
進行配置,它須要指定一個 WORKON_HOME
環境變量,而且運行一下初始化工具 virtualenvwrapper.sh
,virtualenvwrapper.sh
腳本在 /usr/local/bin/
目錄下。 WORKON_HOME
環境變量的路徑就是來存放各類虛擬環境的目錄,咱們一般設置 WORKON_HOME
環境變量路徑爲 ~/.virtualenvs
,即命令以下:
export WORKON_HOME='~/.virtualenvs' source /usr/local/bin/virtualenvwrapper.sh
因爲每次使用都須要執行這兩次操做,所以咱們能夠寫在終端的配置文件中。例如,若是使用 bash
,則須要將以上兩條命令添加到 ~/.bashrc
中,而後再執行 source ~/.bashrc
命令。
這樣每次啓動終端的時候就會自動執行上面兩條指令。
mkvirtualenv vituralenv_name
執行以上命令後,就會建立一個名爲 vituralenv_name
的虛擬環境,且它被存放在環境變量 WORKON_HOME
目錄下。
注意:使用 virtualenvwrapper
的 mkvirtualenv
命令建立虛擬環境後,直接自動激活並進入該虛擬環境。
指定特定的python版本建立虛擬環境加上 -p
參數便可:
mkvirtualenv -p pythonx(.x) vituralenv_name
virtualenvwrapper
能夠經過 workon
進入虛擬環境。
workon virtualenv_name
並且能夠經過 workon
命令直接進行虛擬環境之間的切換!
virtualenvwrapper
同 virtualenv
同樣,直接經過 deactivate
命令退出虛擬環境。
deactivate
rmvirtualenv vituralenv_name
特別聲明一下:virtualenvwrapper
中的命令支持tab
鍵自動補全的哦!