虛擬環境(venv)
又稱:虛擬環境 · virtual environment · virtualenv · PEP 668 · externally-managed-environment
一個專案專用、跟系統隔開的 Python 套件資料夾。啟動它之後,pip 裝的東西只會進到裡面。
你會在什麼時候遇到它
在 macOS 或 Linux 上第一次 pip install,很可能直接被 error: externally-managed-environment 擋下來。不認得這句話,你會以為自己打錯字,或去網上找「一行指令解法」把系統 Python 弄壞。正解是建一個 venv,成本只有兩行指令。
打個比方
像另外租一間工作室,而不是在自家客廳施工。裡面堆什麼工具、弄得再亂都不影響客廳;不喜歡了,整間退租就好。
最小範例
python3 -m venv .venv # 在目前資料夾建一個叫 .venv 的環境
source .venv/bin/activate # macOS / Linux:啟動它
.venv\Scripts\Activate.ps1 # Windows PowerShell:啟動它
python3 -m pip install requests # 之後裝的東西都只進到 .venv 裡
deactivate # 用完離開啟動成功後,提示字元前面會多出 (.venv)。看到那個前綴,你才知道接下來的 python 和 pip 指的是這個環境,不是系統那一個。
最常搞錯的地方
- 建了 venv 卻忘了啟動就直接 pip install。東西照樣進到系統 Python,錯誤訊息一字不改地再來一次。
- 把 externally-managed-environment 讀成「權限不夠」,於是加 sudo 重跑。這跟權限無關,是發行版刻意擋下來的;加了 sudo 只會讓後果更難收拾。