1 引言
進行Python開發時,多個項目可能使用到不同的依賴,例如A項目需要1.8版本的Django,而B項目需要2.0版本的Django,這時候如果沒有使用虛擬環境,就需要來回卸載和安裝Django,十分不便。虛擬環境的出現可以很好的解決這一問題。
本篇博文主要紹Python的虛擬環境管理方法,包括virtualenv、virtualenvwrapper、pycharm等。需要說明的是,在使用前面提到的幾種方法之前,必須確保系統中已經至少安裝有一個Python版本。
2 virtualenv
(1 安裝
virtualenv的安裝與Python普通第三方包安裝一樣,都可以通過pip來安裝:
pip install virtualenv
(2)創建虛擬環境
創建一個名為firstenv的虛擬環境:
virtualenv firstenv
上圖中最后一行出現“done”的字樣說明虛擬環境安裝成功,此時,在當前文件夾會出現一個與剛新建的虛擬環境同名的文件夾:
在firstenv文件夾內部的有一個銘文Scripts的子文件夾,這個文件夾存放了Python環境必備的一些可執行文件:
看到這里你應該明白了,virtualenv所謂的虛擬環境就是在當前文件夾中以真實環境為模板,另外存儲一套編譯工具,實現與正式環境的隔離。
那么,剛新建號的環境該怎么使用呢?
(3)進入-退出虛擬環境
在進入虛擬環境前,需要在命令行中先進入上面提到的Scripts文件夾中,然后運行Scripts文件夾中的activate.bat這一批處理文件進入虛擬環境:
activate.bat
運行activate.bat文件后,命令行每一行前面都會出現虛擬環境標識,如下圖所示,證明已經成功進入虛擬環境:
輸入Python,查看一下虛擬環境版本:
剛裝好的虛擬環境是非常干凈的,驗證一下:
果然沒有任何其它的第三方包。如果要為接下來的開發必要的第三方包,可以使用pip命令,這與在正式環境中的操作時一樣的,另外說明一下,因為已經進入了虛擬環境,使用pip安裝第三方包時,命令行可以在任何目錄在中:
那么,怎么退出這個虛擬環境呢?運行Scripts文件夾下deactivate.bat文件,不過,也可以不用回到Scripts文件夾中,直接運行deactivate.bat(后綴名可省略)即可。
可以看到,運行deactivate.bat后,每行開頭的(firstenv)標識果然沒了。
3 virtualenvwrapper
virtualenv每一次使用都需要進入到虛擬環境目錄的Scripts文件夾中,然后才能運行activate.bat文件,進入虛擬環境。使用有些繁瑣不說,如果創建的虛擬環境多一些的話,管理也有些麻煩,所以就有了virtualenvwrapper。
(1)安裝virtualenvwrapper
與virtualenv一樣,可以通過pip安裝:
pip install virtualenvwrapper-win
(2)創建虛擬環境
創建一個名為secondenv的虛擬環境:
mkvirtualenv secondenv
運行上述命令后,在當前文件夾下可不會找到剛創建好的虛擬環境。通過雲上面圖片,發現virtualenvwrapper將虛擬環境安裝在C:\Users\Administrator\Envs這一目錄中,也就是說,virtualenvwrapper默認將虛擬環境同一安裝到C:\Users\用戶名\Envs這一目錄中。
通過workon命令查看已經新建的虛擬環境列表:
可以看到,我們無論在哪個目錄下,運行workon命令,都可以列出workon新建的所有虛擬環境。
不過美中不足的是,virtualenvwrapper將虛擬環境安裝在了默認的文件夾中。那么,怎么virtualenvwrapper將虛擬環境同一安裝到我們指定的目錄中呢?那就要通過配置系統環境變量來實現了。
首先新建一個文件夾,專門弄用來存放virtualenvwrapper創建的虛擬環境,例如在D盤新建一個名為virtualenvs的文件夾。然后進行如下配置:
桌面“此電腦”圖標->右鍵->屬性->高級系統設置->高級->環境變量->新建系統變量,接下來如下圖所示,變量名輸入WORKON_HOME,變量值輸入文件夾路徑,即D:\virtualenvs,輸入完成后點擊確定,保存退出。
重新開一個命令行窗口(必須),再次新建虛擬環境:
查看一下當前新建好的虛擬環境列表:
發現只有一個thirdenv,為什么之前新建的secondenv沒有列出來呢?因為secondenv在之前默認的文件路徑中,workon只會列出當前指定的文件路徑下的虛擬環境。
(3)進入-退出虛擬環境
細心地你一定已經發現,事實上,用mkvirtualenv命令新建虛擬環境的時候,會自動進入虛擬環境中。不過,如果我們要進入已經新建好的虛擬環境該怎么做呢?當workon命令不帶任何參數時,作用是列出所有的虛擬環境;當workon命令后面接虛擬環境名時,作用便是進入指定的虛擬環境。另外,上文也提到過,相比於virtualenv,使用virtualenvwrapper的好處就是你可以在任意目錄下進入已創建的虛擬環境中。例如,進入剛新建好的虛擬環境thirdenv中:
workon thirdenv
退出虛擬環境的方法倒是與virtualenv一樣,采用deactivate這一命令:
最后總結一下virtualenvwrapper的幾個常用命令:
新建虛擬環境:mkvirtualenv + 虛擬環境名
列出所有虛擬環境:workon
進入虛擬環境:workon + 虛擬環境名
退出虛擬環境:deactivate
4 pycharm
一般而言,直接使用上面介紹的virtualenv和virtualenvwrapper兩種方法進行虛擬環境管理還是比較少的,大多數情況下還是配合IDE進行虛擬環境管理。毋庸置疑,pycharm是最好最流行的Python IDE,功能強大,方便實用。pycharm中也集成了虛擬環境管理功能。
我們使用pycharm新建一個Python項目,並在創建項目時建立虛擬環境:
點擊右下角的Create之后,項目就創建好啦。
剛創建好項目虛擬環境可是干凈得很,需要為項目安裝各種依賴,也就是安裝第三方包,怎么做呢?
按下面步驟一次打開:File->Settings->Project:studyenv->Project Interpreter,會彈出下面的窗口:
然后點擊右上角的“+”號,出現下面的界面:
包管理主要也是在這個窗口中進行。
回到上一個窗口,我們可以看到包列表,里面確實多了一個Django:
Python進行編譯時,pycharm會自動選用項目中的虛擬環境進行編譯,所以pycharm中可沒有進入和退出虛擬環境一說。怎么樣,非常方便吧!
5 總結
合理利用虛擬環境,可以很好得解決同時開發多個項目時的環境問題。本文介紹了virtualenv、virtualenvwrapper、pycharm等3個虛擬環境管理工具,另外要說的是,除了這三個工具外,Annacon也是一個很強大的虛擬環境管理工具,Anaconda功能更加強大、多樣,當然是用上也復雜一下,留待后續博文再來總結。