虛擬環境是 Python 專案依賴隔離、版本管理、部署一致性的基礎工具。virtualenv 建立獨立 Python 環境,virtualenvwrapper 提供便捷管理指令。本文完整涵蓋安裝、建立、啟動、套件管理、專案整合、遷移、Python 3 內建 venv 對比與最佳實務。
site-packages,版本衝突零風險。sudo 安裝套件,用戶目錄即可。requirements.txt 鎖定依賴版本,團隊/部署環境一致。
# 系統級安裝(需 sudo)
sudo pip install virtualenv
# 或用戶級安裝
pip install --user virtualenv
# 確認版本
virtualenv --version
# 專案目錄下建立
cd myproject
virtualenv venv # 預設繼承系統 site-packages
virtualenv --no-site-packages venv # 完全隔離(舊版預設,新版加參數)
# 指定 Python 版本
virtualenv -p python3.8 venv38
virtualenv -p /usr/bin/python3.11 venv311
# Linux/macOS
source venv/bin/activate
# 提示字元變化:(venv) user@host:~/myproject$
# Windows CMD
venv\Scripts\activate.bat
# Windows PowerShell
venv\Scripts\Activate.ps1
# 停用
deactivate
# 確認使用環境內 pip
which pip # /path/to/myproject/venv/bin/pip
# 安裝套件
pip install requests django==4.2
# 查看已安裝
pip list
pip freeze
# 匯出需求檔
pip freeze > requirements.txt
# 從需求檔安裝(部署/新環境)
pip install -r requirements.txt
# 安裝
pip install virtualenvwrapper
# 設定 shell(~/.bashrc 或 ~/.zshrc)
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh # 路徑視安裝位置調整
# 重新載入
source ~/.bashrc
| 指令 | 功能 | 範例 |
|---|---|---|
| mkvirtualenv | 建立並啟動環境 | mkvirtualenv myproject |
| workon | 列出/切換環境 | workon / workon myproject |
| rmvirtualenv | 刪除環境 | rmvirtualenv oldproject |
| deactivate | 離開當前環境 | deactivate |
| lsvirtualenv | 列出所有環境 | lsvirtualenv |
| cpvirtualenv | 複製環境 | cpvirtualenv src dest |
| showvirtualenv | 顯示環境詳細資訊 | showvirtualenv |
| 問題 | 原因 | 解決 |
|---|---|---|
| ImportError 無法匯入已安裝套件 | 未啟動虛擬環境、IDE 用錯解譯器 | 確認提示字元有 (venv)、IDE 設定正確路徑 |
| pip install 權限錯誤 | 未在虛擬環境、嘗試寫入系統目錄 | 啟動虛擬環境、或用 --user |
| Python 版本不符 | 環境建立時用錯 python | 重建環境:virtualenv -p python3.11 venv |
| requirements.txt 版本衝突 | 依賴關係複雜 | 用 pip-tools pip-compile 解析 |
虛擬環境是 Python 專案專業開發的**標準配備**。新專案建議:**Python 3.3+ 直接用內建 venv**,搭配 pip-tools 管理依賴;需要統一管理多環境時加裝 virtualenvwrapper;多 Python 版本專案用 pyenv + pyenv-virtualenv。核心流程:建立 → 啟動 → pip install → freeze → requirements.txt → 部署同步。養成「每專案一環境」習慣,徹底解決依賴地獄。