Python 虛擬環境(Virtual Environment)介紹
📌 什麼是虛擬環境?
Python 的 虛擬環境(Virtual Environment) 是一種獨立的 Python 執行環境,讓你在不同的專案中使用不同的 Python 版本與套件,確保環境不會相互影響。
虛擬環境可以被看作是一個封閉的 Python 執行環境,當你在這個環境內執行 Python 程式時,會使用該環境內的 Python 版本與套件,而不會影響全域(系統)環境。
📌 為什麼需要虛擬環境?
-
避免套件衝突
- 假設你有兩個專案:
- A 專案需要
Django 3.2 - B 專案需要
Django 4.2
- A 專案需要
- 若沒有虛擬環境,這些套件會安裝在全域,導致相互衝突。
- 使用虛擬環境,每個專案可以獨立安裝對應的套件版本。
- 假設你有兩個專案:
-
保持環境乾淨
- 沒有虛擬環境,所有套件都安裝在系統 Python,時間久了會變得混亂且難以管理。
- 透過虛擬環境,每個專案的依賴(dependencies)都是獨立的,方便管理。
-
確保可移植性
-
在開發時,你可以使用
requirements.txt來記錄虛擬環境中的套件: -
當別人使用你的專案時,可以使用:
-
這樣可以確保團隊中的每個人、甚至部署到伺服器時,都能獲得相同的 Python 環境,避免「它在我這裡可以跑」的問題。
-
-
測試不同 Python 版本
- 假設你開發了一個專案,想測試它在 Python 3.8 和 Python 3.11 下的表現,虛擬環境可以讓你輕鬆切換不同的 Python 版本,而不影響系統環境。
📌 常見的 Python 虛擬環境管理工具
Python 提供了多種管理虛擬環境的方法,最常見的有:
- venv(官方標準)
- conda(適用於資料科學與多語言環境)
- pipenv(進階管理工具,結合
pip和venv)
🔹 1. venv(Python 官方內建工具)
venv 是 Python 內建的虛擬環境工具,從 Python 3.3 之後就內建支援。
✅ venv 的優點
- 內建於 Python,不需要額外安裝。
- 輕量級,適合一般開發用途。
- 與
pip搭配使用,可安裝與管理套件。
🚀 venv 使用方式
-
建立虛擬環境
-
啟動虛擬環境
-
Windows
-
Mac/Linux
-
-
安裝套件
-
退出虛擬環境
-
刪除虛擬環境
🛠 適用對象
- 一般 Python 開發者
- 想要簡單管理專案環境
🔹 2. conda(適合資料科學與多語言環境)
conda 是 Anaconda 與 Miniconda 內建的環境管理工具,適用於 資料科學、機器學習、科學計算 等領域,因為它能管理 Python 和非 Python 套件(如 C/C++ 庫)。
✅ conda 的優點
- 可管理 Python 版本(不需要依賴系統的 Python)。
- 適合資料科學與機器學習,內建許多科學計算工具(如
numpy、pandas)。 - 能安裝非 Python 套件(如
tensorflow、CUDA驅動程式)。
🚀 conda 使用方式
-
安裝 Miniconda(輕量版)或 Anaconda(完整版)
-
建立虛擬環境
-
啟動虛擬環境
-
安裝套件
-
退出環境
-
刪除環境
🛠 適用對象
- 資料科學、機器學習、深度學習 開發者
- 需要管理 Python 和非 Python 依賴(如 C/C++ 套件)
🔹 3. pipenv(進階管理工具,結合 pip 和 venv)
pipenv 是 結合 pip(套件管理)與 venv(環境管理) 的工具,讓 Python 虛擬環境管理更直覺。
✅ pipenv 的優點
- 自動管理
virtualenv - 使用
Pipfile取代requirements.txt,讓依賴管理更清晰 - 更安全(支援 hash 驗證與環境隔離)
🚀 pipenv 使用方式
-
安裝
pipenv -
建立並啟動虛擬環境
-
安裝套件
-
退出環境
🛠 適用對象
- 想要更自動化管理虛擬環境的開發者
- 需要較強的套件管理功能(比
venv更完整)
📌 總結
| 工具 | 內建於 Python | 可管理 Python 版本 | 適用對象 |
|---|---|---|---|
| venv | ✅ 是 | ❌ 否 | 一般開發 |
| conda | ❌ 否 | ✅ 是 | 資料科學、AI/ML |
| pipenv | ❌ 否 | ❌ 否 | 進階開發、專案管理 |
📌 結論
- 一般開發者:選
venv(輕量、內建) - 資料科學/機器學習:選
conda(可安裝 Python + C 套件) - 進階管理:選
pipenv(適合大型專案)