Virtualenv--手把手帶你打造Python虛擬環(huán)境

在Github上 git clone到本地的項目中,一般都會有一個requirement.txt。這個文件是用來保存項目所需要的python擴展庫版本的。
不同項目使用的python和擴展庫的版本之間存在著各種差異。也就是說,git clone到本地的項目用你本地的環(huán)境可能運行不起來。
那怎么才能把python環(huán)境同步呢?
那就是利用虛擬環(huán)境了。
在虛擬環(huán)境中,可以配置此項目需要的python環(huán)境和對應(yīng)的擴展庫(開辟一個獨立干凈的空間進行開發(fā))
這樣的虛擬環(huán)境與本地的python環(huán)境完全隔離。
在python有多種配置虛擬環(huán)境的方式,這里介紹一種比較成熟(流行)的:Virtualenv
本文使用的環(huán)境如下:
CentOS7.6
Python3.6
Virtualenv
安裝Virtualenv:
pip3?install?virtualenv
創(chuàng)建虛擬環(huán)境:
virtualenv?gitpython
如果你的linux環(huán)境上有多個python版本,可以通過以下的方式指定:
先查看python所在位置:
??然后創(chuàng)建指定版本的虛擬環(huán)境:
cd?/home/code/gitpython
virtualenv?-p?/usr/local/bin/python3?gitpython
此時,在 gitpython(項目路徑)下,會生成一個gitpython虛擬環(huán)境(用來存放虛擬環(huán)境的配置)

激活虛擬環(huán)境:
source?gitpython/bin/activate

如上圖所示,激活虛擬環(huán)境后,在linux終端的最左邊會顯示(虛擬環(huán)境的名稱)
有了虛擬環(huán)境,就可以在虛擬環(huán)境里批量安裝擴展庫了。
還記得文章開頭的requirement.txt嘛?
可使用如下方式安裝:
pip?install?-r?requirements.txt
注意,此處有坑(創(chuàng)建的虛擬環(huán)境與本地的python版本的默認(rèn)庫的版本可能有差異)
需要安裝的其他擴展庫可能需要某個標(biāo)準(zhǔn)庫的依賴。當(dāng)你安裝失敗時,根據(jù)報錯的提示,可以先用pip在虛擬環(huán)境里單獨替換某個庫的版本。
說回正題。
當(dāng)你搞完項目,你可能又加入了一些新功能,用到了其他的擴展庫,你也想要生成一個新的requirements.txt,可以使用命令:
pip?freeze?>?requirements.txt
當(dāng)你都搞定了想要退出虛擬環(huán)境,執(zhí)行命令:
deactivate
以上,就是使用Virtualenv最常用的流程了,已經(jīng)可以解決開發(fā)環(huán)境的問題了。
Virtualenvwrapper
不過,使用Virtualenv每次創(chuàng)建一個虛擬環(huán)境,都得執(zhí)行命令:
source?虛擬環(huán)境目錄/bin/activate
于是 virtualenvwrapper 出現(xiàn)了。
它對不同的虛擬環(huán)境使用不同的目錄進行管理,并且還省去了每次開啟虛擬環(huán)境時候的 source 操作,使得虛擬環(huán)境更加好用。
安裝擴展庫:
pip3?install?virtualenvwrapper
使用
vim?~/.bashrc?
配置 virtualenvwrapper:
export?WORKON_HOME=$HOME/.virtualenvs
export?PROJECT_HOME=$HOME/workspace
export?VIRTUALENVWRAPPER_SCRIPT=/usr/local/python3/bin/virtualenvwrapper.sh
export?VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3
source?/usr/local/python3/bin/virtualenvwrapper.sh
接著執(zhí)行 source ~/.bashrc(或./zshrc) ,使配置生效。
注意:修改.bashrc還是.zshrc取決于你使用的哪種 shell。
Virtualenv相關(guān)命令總結(jié)如下:
workon: 打印所有的虛擬環(huán)境 mkvirtualenv xxx: 創(chuàng)建 xxx 虛擬環(huán)境,可以–python=/usr/local/bin/python3 ?指定python版本(配置文件中已配置,可自行選擇) workon xxx: 使用 xxx 虛擬環(huán)境 deactivate: 退出 xxx 虛擬環(huán)境 rmvirtualenv xxx: 刪除 xxx 虛擬環(huán)境 lsvirtualenv : 列舉所有的環(huán)境 cdvirtualenv: 導(dǎo)航到當(dāng)前激活的虛擬環(huán)境的目錄中,比如說這樣您就能夠瀏覽它的 site-packages cdsitepackages: 和上面的類似,但是是直接進入到 site-packages 目錄中 lssitepackages : 顯示 site-packages 目錄中的內(nèi)容
舉例說明:
使用mkvirtualenv命令,創(chuàng)建兩個虛擬環(huán)境test和test1
使用workon test命令,切換到虛擬環(huán)境test
使用rmvirtualenv test1命令,刪除虛擬環(huán)境test1

使用cdvirtualenv命令,導(dǎo)航到當(dāng)前激活的虛擬環(huán)境的目錄
使用cdsitepackages命令,直接進入到 site-packages 目錄中

使用lssitepackages命令,顯示 site-packages 目錄中的內(nèi)容

OK.
關(guān)于python虛擬環(huán)境,就先到這了。
再有新的發(fā)現(xiàn),待續(xù)!
