目錄
一、參考
聊聊 virtualenv 和 virtualenvwrapper 實踐
virtualenv和virtualenvwrapper總結
二、概要
由於Python的版本衆多,而且還有Python2和Python3的爭論,另外一些依賴包也有兼容性問題,所以很多軟件包或者是第三方庫很容易出現版本不兼容的問題
可以通過Virtualenv工具很方便的構建出一系列虛擬的Python環境,然後在每個環境中安裝需要的軟件包(配合pip使用),這一系列的環境是相互隔離的,作爲一個獨立的環境就不容易出現版本問題,而且還很方便部署
如圖所示:
核心要點:
- 一個操作系統下,可以有多個'操作系統級別的'Python解釋器;
- 每個Python解釋器有一個指向自己的pip工具,兩者一一對應;
- 通過virtualenv可以虛擬任何一個'操作系統級別的'Python解釋器成爲一個'虛擬級別'的解釋器
- 每個'虛擬級別'的解釋器又擁有自己獨立的pip工具和site-packages
環境
Python 3.7
Windows 10
三、Virtualenv
virtualenv爲應用提供了隔離的Python運行環境,解決了不同應用間多版本的衝突問題。
優點
- 使不同應用開發環境獨立
- 環境升級不影響其他應用,也不會影響全局的python環境
- 它可以防止系統中出現包管理混亂和版本的衝突
步驟
1. 安裝
pip install virtualenv
2. 創建虛擬環境
默認是創建在當前命令的目錄下的
virtualenv 虛擬環境名
創建好了之後,當前目錄下會有一個虛擬環境名的目錄,該目錄下有:(Windows)
- Include
- Lib
- Scripts
- tcl
注意:如果是Linux下的話,目錄結構和Windows下的不太一樣:
- bin
- include
- lib
注意:如果有多個Python版本的話,可以加--python/-p指定python版本,後面跟着python版本的python.exe路徑
注意:一個虛擬環境是一個文件目錄,它可以鏈接python.exe文件、pip.exe文件和它所使用的python版本。在虛擬環境中安裝的庫只會存在於虛擬環境的目錄裏,而不會出現在全局的site-packages目錄裏。使用完虛擬環境後,可以將目錄刪除,所有的東西也隨之消失了
注意:最好是針對每個Python項目都創建單獨的虛擬環境,即每個Python項目都對應一個虛擬環境
注意:創建好的虛擬環境,默認安裝有:pip,wheel和setuptools,有一些教程會建議使用 --no-site-packages來創建虛擬環境,這樣創建出來的虛擬環境是沒有這三個包的,但是 --no-site-packages已經在新版本的Virtualenv中廢棄了,詳情可以參考文檔:https://virtualenv.pypa.io/en/latest/reference/#virtualenv-command
3. 激活虛擬環境
# Linux下
source 虛擬環境目錄/bin/activate
# Windows下
虛擬環境目錄/Scripts/activate
激活虛擬環境後就進入了一個隔離的環境,安裝,卸載和使用模塊,都會在虛擬環境中,而不會影響系統和其他環境。
4. 停止虛擬環境
deactivate
5. 刪除虛擬環境
rmvirtualenv 虛擬環境名
# 或者
rm -rf 虛擬環境名
更多命令可以使用virtualenv --help或者是去參考官方文檔:https://virtualenv.pypa.io/en/latest/reference/#virtualenv-command
四、Virtualenvwrapper
virtualenv 的一個最大的缺點就是,每次開啓虛擬環境之前要去虛擬環境所在目錄下的 bin/Scripts 目錄下 source 一下 activate進行激活,這就需要我們記住每個虛擬環境所在的目錄,一旦有多個項目的話,進行項目的切換非常的麻煩
一種可行的解決方案是,將所有的虛擬環境目錄全都集中起來,比如放到 ~/virtualenvs/,並對不同的虛擬環境使用不同的目錄來管理。virtualenvwrapper 正是這樣做的。並且,它還省去了每次開啓虛擬環境時候的 source 操作,使得虛擬環境更加好用。
virtualenvwrapper是virtualenv的擴展管理包,用於更方便管理虛擬環境
優點
- 將所有虛擬環境整合在一個目錄下
- 管理(新增,刪除,複製)虛擬環境
- 切換虛擬環境
Windows下安裝步驟
1. 安裝
pip install virtualenvwrapper-win
注意:Windows下需要安裝virtualenvwrapper-win,而Linux下安裝virtualenvwrapper
2. 建立虛擬環境總目錄
virtualenvwrapper需要指定一個目錄,是用來存放各種虛擬環境目錄的目錄(WORKON_HOME)
我這裏使用 D://Envs 作爲虛擬環境目錄
mkdir d://Envs
3. 加入環境變量
通過計算機-->屬性-->高級系統設置-->環境變量-->在系統變量中新建“變量名”:WORKON_HOME,變量值:D:\Envs
注意:如果不設置環境變量WORKON_HOME 的話,默認的虛擬環境是位於:C:\Users\username\envs
Linux下安裝步驟
1. 安裝
pip install virtualenvwrapper
默認安裝地址:/usr/local/bin
注意:安裝完成之後並不能直接使用virtualenvwrapper,還需要進一步進行環境設置
2. 建立虛擬環境總目錄
virtualenvwrapper需要指定一個目錄,是用來存放各種虛擬環境目錄的目錄
我這裏使用 ~/.virtualenvs 作爲虛擬環境目錄
mkdir ~/.virtualenvs
3. 設置
virtualenvwrapper使用的時候,需要指定一下環境目錄,並且需要source一下virtualenvwrapper.sh
export WORKON_HOME='~/.virtualenvs'
source /usr/local/bin/virtualenvwrapper.sh
由於每次都需要執行這兩步操作,所以可以將其寫入終端的配置文件中
vim ~/.bashrc
export WORKON_HOME='~/.virtualenvs'
source /usr/local/bin/virtualenvwrapper.sh
export VIRTUALENV_USE_DISTRIBUTE=1 # 總是使用pip/distribute
export WORKON_HOME=~/.virtualenvs # 虛擬環境總目錄
export PIP_VIRTUALENV_BASE=$WORKON_HOME
export PIP_RESPECT_VIRTUALENV=true
注意:如果是使用zsh的話,則需要vim ~/.zshrc
注意:如果virtualenvwrapper.sh文件的路徑不確定的話,可以使用find / -name virtualenvwrapper.sh來查找對應的virtualenvwrapper.sh路徑
4. 運行
source ~/.bashrc
使用
在虛擬環境總目錄下創建虛擬環境
mkvirtualenv 虛擬環境名
默認創建在WORKON_HOME(虛擬環境總目錄)下,而不是在當前目錄下的
注意:可以加--python/-p指定python版本,後面跟着python版本的python.exe路徑
注意:最好是針對每個Python項目都創建單獨的虛擬環境,即每個Python項目都對應一個虛擬環境
相關命令:
刪除環境
rmvirtualenv 虛擬環境名
激活環境/切換環境
workon 虛擬環境名
退出環境
deactivate
列出所有的環境
workon
# 或者
lsvirtualenv -b
五、Pycharm虛擬環境的使用
在Pycharm中很方便的使用虛擬環境,Pycharm中可以指定解釋器,直接將項目的Python解釋器設置爲對應環境中的Python解釋器就行了
比如:
我在D:\Envs\下建立了一個虛擬環境za-devops-events
然後在Pycharm中打開對應的項目,設置->Settings-Project Interpreter,選擇Add Project Interpreter,選擇Existing environment,選擇D:\Envs\za-devops-events\Scripts\python.exe
如圖:
選擇已有的虛擬環境:
選擇虛擬環境的Pythoh文件:D:\Envs\za-devops-events\Scripts\python.exe,然後就可以了