Linux 上的 Python 虛擬環境管理 文章首圖

Linux 上的 Python 虛擬環境管理

Linux 上的 Python 虛擬環境管理

在 Linux 開發世界中,Python 無疑是最受歡迎的程式語言之一。然而,隨著專案需求的複雜度增加,不同專案之間對 Python 套件版本的需求往往存在衝突。例如,專案 A 依賴 requests==2.28.0,而專案 B 需要 requests==2.31.0。若直接在系統全域環境中安裝,不僅容易導致依賴衝突,更可能破壞作業系統預設的 Python 環境(許多 Linux 發行版的核心工具依賴系統預設的 Python 版本)。

為了解決這個問題,使用「虛擬環境」(Virtual Environment)成為開發者的標準實踐。本文将介紹如何從零開始建立、管理及清除 Python 虛擬環境,幫助你在 Ubuntu 22.04 或 Debian 12 系統上維持乾淨且高效的開發工作區。

為什麼需要虛擬環境?

虛擬環境是一種工具,它能為每個專案建立獨立的 Python 執行環境。這意味著每個專案可以擁有自己專屬的 site-packages 目錄,安裝的套件不會與其他專案或系統全域環境產生干擾。這不僅解決了版本衝突問題,也便於專案的部署與復現,確保在生產環境中能精確複製開發時的依賴條件。

建立虛擬環境

在現代 Linux 發行版中,我們通常使用內建的 venv 模組來建立虛擬環境。這是一個標準庫模組,無需額外安裝即可使用。

首先,請確認你的系統已安裝 Python 3。你可以透過以下指令檢查版本:

python3 --version

接著,進入你的專案目錄。假設我們要建立一個名為 my_project 的專案:

mkdir ~/my_project
cd ~/my_project

使用 python3 -m venv 指令建立虛擬環境。這裡我們將虛擬環境命名為 venv,這是一個常見的慣例:

python3 -m venv venv

執行上述指令後,你會在專案目錄下看到一個名為 venv 的資料夾,其中包含了獨立的 Python 執行檔、pip 以及空的 site-packages 目錄。

啟用虛擬環境

建立完虛擬環境後,它處於停用狀態。要開始使用它,必須先「啟用」它。啟用後,你的終端提示字元(PS1)通常會顯示環境名稱,且系統會優先使用虛擬環境中的 Python 和 pip。

在 Bash 或 Zsh 中,啟用指令如下:

source venv/bin/activate

啟用後,請觀察終端機提示字元,它應該會變成類似 (venv) user@host:~/my_project$ 的樣貌。此時,輸入 which python 應該會指向虛擬環境內的 Python 路徑,例如 /home/user/my_project/venv/bin/python

現在,你可以安全地安裝專案所需的套件,而不必擔心影響系統全域環境。例如:

pip install requests flask

停用與刪除虛擬環境

當工作完成時,記得停用虛擬環境以恢復系統全域環境:

deactivate

若你不再需要該虛擬環境,只需刪除對應的資料夾即可:

rm -rf venv

常見問題與解決方案

1. 為什麼安裝套件時提示權限錯誤?

如果在啟用虛擬環境後,仍嘗試使用 sudo pip install,會導致套件安裝到系統全域目錄,而非虛擬環境中。請務必移除 sudo,直接使用 pip install <package>。虛擬環境的設計初衷就是讓使用者擁有完全的控制權,無需 root 權限。

2. 如何匯出或復現依賴套件?

為了便於團隊協作或部署,通常需要將當前環境的套件清單匯出為 requirements.txt 檔案:

pip freeze > requirements.txt

在其他機器或環境中復現時,執行:

pip install -r requirements.txt

這能確保所有開發者使用完全相同的套件版本,避免「在我電腦上沒問題」的經典錯誤。

小結

掌握虛擬環境的管理是 Linux Python 開發者的基本功。透過 venv 模組,我們能以極低的成本隔離專案依賴,提升開發穩定性與安全性。建議在開始任何新的 Python 專案時,養成先建立虛擬環境的習慣。這不僅是最佳實踐,更是專業開發流程中不可或缺的一環。