Python虛擬環境



Python虛擬環境

Python虛擬環境在專案目錄中建立Python的虛擬安裝。使用者可以為每個專案安裝和管理Python包。這允許使用者安裝包並修改他們的Python環境,而無需擔心破壞其他環境中安裝的包。

什麼是Python虛擬環境?

Python虛擬環境是

  • 被認為是可丟棄的。
  • 用於包含支援專案所需的特定Python直譯器和軟體庫以及二進位制檔案。
  • 包含在一個目錄中,通常在專案目錄中命名為venv或.venv。
  • 不被認為是可移動或可複製的。

當您在計算機上安裝Python軟體時,它可以在檔案系統的任何位置使用。這是一個系統範圍的安裝。

在開發Python應用程式時,可能需要使用pip實用程式安裝一個或多個庫(例如,pip3 install somelib)。此外,一個應用程式(讓我們稱之為App1)可能需要特定版本的庫——比如somelib 1.0。同時,另一個Python應用程式(例如App2)可能需要相同庫的較新版本,比如somelib 2.0。因此,透過安裝新版本,App1的功能可能會因為同一庫的兩個不同版本之間衝突而受到影響。

可以透過在同一臺機器上提供兩個隔離的Python環境來避免這種衝突。這些被稱為虛擬環境。虛擬環境是一個單獨的目錄結構,包含隔離的安裝,其中包含Python直譯器、標準庫和其他模組的本地副本。

下圖顯示了使用虛擬環境的優勢。使用全域性Python安裝,建立多個虛擬環境,每個環境具有同一庫的不同版本,從而避免衝突。

python virtual environment

使用venv在Python中建立虛擬環境

標準Python發行版中的venv模組支援此功能。使用以下命令建立一個新的虛擬環境。

C:\Users\Acer>md\pythonapp
C:\Users\Acer>cd\pythonapp
C:\pythonapp>python -m venv myvenv

這裡,myvenv是將建立一個新的Python虛擬環境的資料夾,顯示以下目錄結構:

Directory of C:\pythonapp\myvenv
22-02-2023 09:53 <DIR> .
22-02-2023 09:53 <DIR> ..
22-02-2023 09:53 <DIR> Include
22-02-2023 09:53 <DIR> Lib
22-02-2023 09:53 77 pyvenv.cfg
22-02-2023 09:53 <DIR> Scripts

啟用和停用虛擬環境的實用程式以及Python直譯器的本地副本將放在scripts資料夾中。

Directory of C:\pythonapp\myvenv\scripts
22-02-2023 09:53 <DIR> .
22-02-2023 09:53 <DIR> ..
22-02-2023 09:53 2,063 activate
22-02-2023 09:53 992 activate.bat
22-02-2023 09:53 19,611 Activate.ps1
22-02-2023 09:53 393 deactivate.bat
22-02-2023 09:53 106,349 pip.exe
22-02-2023 09:53 106,349 pip3.10.exe
22-02-2023 09:53 106,349 pip3.exe
22-02-2023 09:53 242,408 python.exe
22-02-2023 09:53 232,688 pythonw.exe

啟用虛擬環境

要啟用此新的虛擬環境,請在Scripts資料夾中執行activate.bat

C:\pythonapp>myvenv\scripts\activate
(myvenv) C:\pythonapp>

注意括號中的虛擬環境名稱。Scripts資料夾包含Python直譯器的本地副本。您可以在此虛擬環境中啟動Python會話。

檢查Python是否在虛擬環境中執行?

要確認此Python會話是否在虛擬環境中,請檢查sys.path

(myvenv) C:\pythonapp>python
Python 3.10.1 (tags/v3.10.1:2cd268a, Dec 6 2021, 19:10:37) [MSC v.1929
64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', 'C:\\Python310\\python310.zip', 'C:\\Python310\\DLLs',
'C:\\Python310\\lib', 'C:\\Python310', 'C:\\pythonapp\\myvenv',
'C:\\pythonapp\\myvenv\\lib\\site-packages']
>>>

此虛擬環境的scripts資料夾還包含pip實用程式。如果您從PyPI安裝包,該包將僅在當前虛擬環境中有效。

停用虛擬環境

要停用此環境,請執行deactivate.bat

廣告