virtualenvwrapper:Python 環(huán)境管理工具
概況
在使用 Python 開(kāi)發(fā)的過(guò)程中,工程一多,難免會(huì)碰到不同的工程依賴不同版本的庫(kù)的問(wèn)題;亦或者是在開(kāi)發(fā)過(guò)程中不想讓物理環(huán)境里充斥各種各樣的庫(kù),引發(fā)未來(lái)的依賴災(zāi)難。如果我們要同時(shí)開(kāi)發(fā)多個(gè)應(yīng)用程序,那這些應(yīng)用程序都會(huì)共用一個(gè) Python,就是安裝在系統(tǒng)的 Python 3。如果應(yīng)用 A 需要 jinja 2.7,而應(yīng)用 B 需要 jinja 2.6 怎么辦?此時(shí),我們需要對(duì)于不同的工程使用不同的虛擬環(huán)境來(lái)保持開(kāi)發(fā)環(huán)境以及宿主環(huán)境的清潔。為了不污染全局環(huán)境,通常都會(huì)使用環(huán)境隔離管理工具 virtualenv 與 virtualenvwrapper。
virtualenv 是在項(xiàng)目底下執(zhí)行生成 venv 環(huán)境目錄以此來(lái)進(jìn)行管理,這非常適合使用諸如 VSCode 這種集成環(huán)境配置的開(kāi)發(fā)工具;那么當(dāng)通過(guò) shell 來(lái)運(yùn)行 virtualenv 時(shí)便會(huì)顯得非常麻煩,因?yàn)槊看?shell 關(guān)閉再打開(kāi)后都需要重新配置環(huán)境參數(shù)。
virtualenv 需要每次使用 source 命令導(dǎo)入虛擬機(jī)運(yùn)行環(huán)境,這一點(diǎn)非常麻煩,另外開(kāi)發(fā)者還有可能忘記虛擬環(huán)境目錄的建立位置,virtualenvwrapper 這一命令行工具就是通過(guò)對(duì) virtualenv 進(jìn)行封裝,解決了上述問(wèn)題。virtualenvwrapper 是將所有的 Python 項(xiàng)目虛擬環(huán)境環(huán)境都存放在一起,在使用 shell 配合小型開(kāi)發(fā)工具就會(huì)非常方便。
virtualenvwrapper 安裝配置(Mac)
-
使用 pip3 安裝,
virtualenv也會(huì)在此期間安裝完畢$ sudo pip3 install virtualenvwrapper -
新建存放環(huán)境目錄
$ mkdir -p ~/.virtualenvs -
配置
virtualenvwrapper環(huán)境(使用 python 3),打開(kāi) .zshrc,執(zhí)行vim ~/.zshrc并寫(xiě)入(如果有安裝item2與oh-my-zsh)# 設(shè)置virtualenvwrapper export WORKON_HOME="~/.virtualenvs" export VIRTUALENVWRAPPER_PYTHON="/usr/local/bin/python3" # 打開(kāi)終端自動(dòng)啟用 source /usr/local/bin/virtualenvwrapper.sh -
使配置生效
$ source ~/.zshrc
virtualenvwrapper 使用
-
新建虛擬環(huán)境
Test并指定 Python 版本為 Python3:$ mkvirtualenv Test --python=python3執(zhí)行
lsvirtualenv指令查看所有環(huán)境,環(huán)境Test位于 ~/Envs/test$ lsvirtualenv Test ==== -
在項(xiàng)目底下激活虛擬環(huán)境
Test:workon Test -
其他指令:
## 退出環(huán)境 Test deactivate ## 刪除環(huán)境 Test rmvirtualenv test ## 更多指令可以在 shell 中輸入 virtualenv 回車會(huì)有提示
在 VSCode 中使用虛擬環(huán)境
- 進(jìn)入工作環(huán)境設(shè)置文件
settings.json,加入如下配置:
"python.venvPath": "~/.virtualenvs"
具體操作界面如圖所示:

- 重啟
VSCode即可看到配置已經(jīng)成功被識(shí)別,便可以選擇剛才新建的虛擬環(huán)境Test:
