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
(適合大型專案)