【Python】venv vs pyenv 比較
venv 與 pyenv 都是 Python 環境管理工具,但功能不同、用途也不同。以下是兩者的詳細比較:
🆚 venv vs pyenv 比較表
| 項目 | venv |
pyenv |
|---|---|---|
| ✅ 功能 | 建立虛擬環境(isolated packages) | 管理多個 Python 版本(例如 3.6, 3.8, 3.11) |
| 📦 主要用途 | 為每個專案建立獨立依賴環境 | 切換/安裝不同版本的 Python |
| 🧰 安裝方式 | Python 內建(3.3+) | 需額外安裝(使用 Git clone 或安裝腳本) |
| 🪄 使用方式 | python -m venv myenv |
pyenv install 3.11.3 + pyenv global/local |
| 📁 環境位置 | 專案內產生 myenv/ 資料夾 |
全局安裝於 ~/.pyenv/versions/ |
| 🧩 是否支援套件分離 | ✅ 支援(每個虛擬環境獨立) | ❌ 不直接支援(但可配合 pyenv-virtualenv) |
| 🧩 是否支援版本共存 | ❌ 不支援(依系統 Python) | ✅ 支援多版本並快速切換 |
| 🔄 可搭配使用 | N/A | ✅ 可搭配 pyenv-virtualenv 使用 venv 功能 |
✅ 何時該用哪個?
使用 venv:
-
你只需在同一台機器上建立隔離的 Python 套件環境
-
你已安裝好適合的 Python 版本,不需要版本切換
使用 pyenv:
-
你需要安裝或切換不同版本的 Python(例如某專案需 3.6,另一個用 3.11)
-
系統預設 Python 無法修改(尤其在 macOS/Linux)
-
想搭配
pyenv-virtualenv做進階管理
🧩 進階:兩者可以一起用
-
用
pyenv裝你需要的 Python 版本:pyenv install 3.11.3 pyenv local 3.11.3 -
再用該版本 Python 建立
venv:python -m venv myenv
這樣你既有版本切換自由,又有每個專案獨立套件環境。
如果你是開發者且有多個專案需求,建議安裝 pyenv,並搭配 venv 或 pyenv-virtualenv 使用。是否需要我幫你配置 pyenv 環境?