文章目錄

Python 之所以會受到許多開發人員歡迎,其中一個原因就是廣泛且不斷增加的第三方(3rd party)套件可供選擇。無論從擷取和格式化數據、高效能數學運算處理到機器學習所有便利套件,都只是使用一個 import 或多個 pip install 就可以處理這些好用的套件。但是當這些套件不能很好地相互配合,或是不同專案需要不同版本套件時會發生什麼狀況呢?
例如 Python 應用程式通常會因為不同專案需求,而需要用到不在標準函式庫 (Standard Library) 中的套件 (Packages) 和模組 (Modules)。或是應用程式有時候因為某個特殊錯誤 (Bug) 的修正才能使用,而需要某個特定版本的函式庫 (Library)。也有可能是這個應用程式是根據此特定版本的函式庫所撰寫。這意味著實際上不太可能安裝一套 Python 就可以滿足所有應用程式或專案的要求。
就像是應用程式 A 需要一個特定模組 1.0 版,但另外一個應用程式 B 則需要 2.0 版,那麼不管安裝 1.0 版 或是 2.0 版,都會衝突到應用程式 A 或 B ,以致於某個應用程式無法使用。這時候的解決方案就是建立不同的 Python 虛擬環境 (Virtual Environment)。
1. 什麼是 Python 虛擬環境?
虛擬環境就是一種獨立的開發環境,它隔離了不同應用程式或專案在開發時相互依賴或影響的關係。每個應用程式都可以擁有自己特定需求的 Python 版本和個別所需不同套件,這時候不同的應用程式就可以使用不同的虛擬環境,即使在同一台機器上運行也不會互相影響。
如前面所提到需要被解決的狀況,應用程式 A 就能夠擁有它自己的虛擬環境,並且是裝好它要的 1.0 版。而應用程式 B 則可以用另外一個有 2.0 版的虛擬環境。
要是未來應用程式 B 需要某個函式庫升級到 3.0 或其它版本時,也不會影響到應用程式 A 的環境。而 virtualenv 則是 Python 常用來建立虛擬環境的套件之一。
接下來本篇文章將針對 virtualenv 的虛擬環境安裝及設定,用六個步驟來完整介紹其整個生命週期。無論讀者是否有任何使用經驗都可以根據後面 step by step 的介紹而學會整個使用。

2. 用 pip 管理套件
如果您已經安裝好 Python 的編譯環境 (可參考文章 Python IDLE 完整安裝教學),此時您可以直接使用 pip3 程式(或 pip) 來進行安裝、升級和移除套件。
首先,會建議先將 pip 做版本升級,您可以在命令提示下輸入下面指令來查看目前有安裝那些套件及其版本。
pip3 list

然後輸入下面指令就可以自動升級到最新版本。
pip3 install --upgrade pip

升級後再查看一次版本,就可以發現版本已經更新到最新版。
pip3 list

pip3 (或 pip) 升級後,我們就可以按部就班進行虛擬環境的設定及使用。
Step 1:安裝 virtualenv
首先,您可以利用下面指令進行安裝 virtualenv 套件
pip3 install virtualenv

並且看到 Successfully installed …….. virtualenv-20.16.3 就表示安裝成功(大家安裝的版本也許不同,但出現這一行字就 OK 了),這時候您再輸入pip3 list 一次,您將會看到增加了您剛剛安裝的 virtualenv 套件及版本資訊。
pip3 list

Step 2:建立虛擬環境
接下來我們將開始建立自己的第一個虛擬環境,筆者先在 C:\> 建立一個資料夾叫做mypython3 的資料夾(讀者可在 CMD 模式或檔案總管中自訂路徑及資料夾名稱),並且在此資料夾下輸入並執行下列指令,就可以自訂產生一個叫做 myenv01 的虛擬環境(如下圖)。
virtualenv myenv01

看到出現下面訊息就表示您已經建立好一個虛擬環境了。您也可以查看在 myenv01 資料夾下也預先建立好一些資料夾及檔案(請參考下圖)。

Step 3:啟用虛擬環境
虛擬環境建立好後,接下來就是在要開始啟用虛擬環境。您可以在 CMD 模式下進入 Scripts 目錄 (在 myenv01 中),接著在 CMD 模式裡輸入 activate 就可以啟用虛擬環境了。
activate

這時候 CMD 模式 C:\mypython3\myenv01\Scripts> 前面會有一個 (myenv01),表示您目前是處於此虛擬環境中。這時候您就可以在此虛擬環境中查看目前有哪些套件,同時開始安裝您所需要的各種 Packages。

Step 4:安裝套件及使用
我們試著安裝 matplotlib 繪圖庫 (我們會在其它文章中詳細介紹)。matplotlib 是一個可以利用 Python 讓數據視覺化的常用繪圖庫。我們可以輸入下面指令來進行安裝。
pip3 install matplotlib

同時可以查看它的版本。

我們試著利用 Python IDLE 寫一小段 matplotlib 的程式,並請將其檔名取為 MyFirstPlot.py,並存放在 C:\mypython3\myenv01> 中。
import matplotlib.pyplot as plt
Taipei_temp = [23.2, 23.4, 23.3, 22.7, 23.2, 23.4, 23.5, 23.8, 24, 23.9]
year = range(2008, 2018)
plt.plot(year, Taipei_temp, color = 'blue', marker='o', linestyle = '--')
plt.show()
然後在此路徑下輸入下面指令來執行這個 py 檔,你將可以看到在此虛擬環境中所執行的狀況。
python MyFirstPlot.py

Step 5:停用虛擬環境
若要離開虛擬環境,只要輸入 deactivate 就可以離開目前虛擬環境,並且發現最前面已經沒有(myenv01)。
deactivate

Step 6:刪除虛擬環境
如果想要刪除任何不要再用的虛擬環境,可以直接利用檔案總管將虛擬環境的資料夾刪除。

或是在 CMD 模式中,輸入下面指令也可以直接將資料夾及其內含的檔案一併刪除。這樣就可以刪除一個虛擬環境了。
rd /s myenv01

虛擬環境可以各自安裝及運行其所需要的套件 (Packages),避免不同專案因需要不同版本環境而互相影響的情況,這對使用者來講是非常重要也非常方便,尤其是未來在機器學習或深度學習專案開發中更是好用。
而 virtualenv 是眾多可在 Python 中建立虛擬環境的其中一種套件,非常方便好用,也是許多人最常拿來建立虛擬環境的一種方式。建立 Python 虛擬環境的方式還有很多種,例如 conda 及在 Anaconda Navigator 中都是常用的方式,大家也可以參考下面另外兩個虛擬環境的安裝說明,相信在未來學習 Python 及機器學習專案上將會更為便利。
讀者如果想要知道 Conda、pip、virtualenv 的命令使用比較,則可以參考下文章。
如果你喜歡這篇文章歡迎訂閱、分享(請載名出處)與追蹤,並持續關注最新文章。同時 FB 及 IG 也會不定期提供國內外教育與科技新知。
2 comments
[…] 使用 Python 的 Virtualenv 來建立虛擬環境(可參考文章:「利用 Virtualenv 建立及管理 Python 虛擬環境」) […]
[…] 利用 Virtualenv 建立及管理 Python 虛擬環境 […]