首頁 > 軟體

Python開發之虛擬環境管理:virtualenv、virtualenvwrapper、pycharm

2020-06-16 16:32:51

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:UsersAdministratorEnvs這一目錄中,也就是說,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功能更加強大、多樣,當然是用上也複雜一下,見 https://www.linuxidc.com/Linux/2019-08/160160.htm 。


IT145.com E-mail:sddin#qq.com