Python 虛擬環境基本操作指令
這是一組 Python 虛擬環境 (venv) 的基本操作指令,用來在不同專案中隔離套件,確保每個專案使用獨立的 Python 環境,避免相互影響。
1. 每個指令的詳細說明
(1) 建立虛擬環境
python -m venv myenv # 建立環境
python -m venv myenv:使用 Python 內建的venv模組,在當前目錄建立名為myenv的虛擬環境。myenv是環境的資料夾名稱,可以自訂,例如project_env。
🔹
venv作用:
- 在
myenv目錄內,會建立一個獨立的 Python 環境,包括:
- 獨立的 Python 可執行檔(
python)。- 獨立的
pip,用來安裝專案所需的套件。- 與系統 Python 隔離,避免影響全局安裝的套件。
(2) 啟動虛擬環境
Linux / macOS:
source myenv/bin/activate
Windows:
myenv\Scripts\activate
🔹 啟動環境後的變化:
- 命令提示符(terminal / cmd / PowerShell)會變成
(myenv),表示目前處於該虛擬環境。- 在此環境內執行
python和pip,只會影響myenv內的套件,不會影響系統 Python。
例如啟動後:
(myenv) $ python --version
Python 3.11.2 # 這可能是獨立的 Python 版本
(myenv) $ pip list
(3) 安裝 Python 套件
pip install requests # 安裝 requests 套件
pip是 Python 的套件管理工具,requests是用來發送 HTTP 請求的套件。pip會在myenv內安裝requests,不影響全局 Python。
安裝後可以用 pip list 檢查已安裝套件
(myenv) $ pip list
Package Version
---------- -------
requests 2.31.0
pip 23.0.1
setuptools 65.5.0
(4) 匯出已安裝的套件
pip freeze > requirements.txt
pip freeze:列出目前環境中安裝的所有套件及其版本。> requirements.txt:將輸出結果儲存到requirements.txt檔案中,方便其他人或其他環境復原相同的套件。
requirements.txt 內容示例
requests==2.31.0
numpy==1.24.3
pandas==1.5.3
🔹 這個檔案的重要性:
- 讓其他人可以快速重現相同的環境。
- 讓自己換電腦時,可以快速安裝相同的套件。
如何使用 requirements.txt 安裝相同套件?
pip install -r requirements.txt
這樣可以自動安裝 requirements.txt 裡列出的所有套件。
(5) 離開虛擬環境
deactivate
deactivate用來退出虛擬環境,回到系統 Python。- 結束後,命令提示符會恢復原本狀態,環境變數也會恢復。
例如:
(myenv) $ deactivate
$ python --version
Python 3.10.12 # 這是系統 Python,而不是 `myenv` 的 Python
2. 為什麼需要虛擬環境?
🔹 問題:如果不使用虛擬環境,會發生什麼?
-
不同專案的相依性衝突
- 假設你有兩個專案:
- Project A 需要
Django 3.2 - Project B 需要
Django 4.2
- Project A 需要
- 如果用 全局 Python 安裝,它們會互相覆蓋,導致其中一個專案無法執行。
- 假設你有兩個專案:
-
污染全局 Python
- 在系統 Python 上安裝大量套件,可能導致不必要的混亂,甚至影響其他系統應用程式。
-
環境不一致
- 你在本機電腦可以執行的程式,換到伺服器可能會因為環境不同而無法運行。
- 使用
venv可以確保開發環境、測試環境、正式環境都是一致的。
3. 使用虛擬環境的最佳實踐
✅ 每個專案都應該有自己的虛擬環境
在不同專案夾內建立對應的 venv:
cd my_project
python -m venv venv
source venv/bin/activate
這樣確保不同專案的 Python 環境彼此獨立。
✅ 使用 requirements.txt 或 Pipfile 管理依賴
開發時,定期更新 requirements.txt:
pip freeze > requirements.txt
之後可以在新環境快速還原:
pip install -r requirements.txt
✅ 不在全局安裝不必要的套件
永遠在虛擬環境內安裝套件,避免污染系統環境。
4. venv 與 virtualenv、pipenv 的比較
venv |
virtualenv |
pipenv |
|
|---|---|---|---|
| 內建 Python | ✅ 是 (Python 3.3+ 內建) | ❌ 需額外安裝 | ❌ 需額外安裝 |
| 跨 Python 版本 | ❌ 只支援當前 Python | ✅ 支援多版本 | ✅ 可自動管理 Python 版本 |
| 需求檔案格式 | requirements.txt |
requirements.txt |
Pipfile + Pipfile.lock |
| 適合對象 | 一般開發者,輕量專案 | 需要跨版本支援 | 團隊開發,完整環境管理 |
如果你是初學者或個人開發者,venv 夠用了。
如果你需要更強大的環境管理,可以考慮 virtualenv 或 pipenv。
5. 總結
venv是 Python 內建的虛擬環境工具,可讓不同專案使用獨立的 Python 環境。python -m venv myenv建立環境,source myenv/bin/activate啟動環境。pip install安裝套件,pip freeze > requirements.txt匯出依賴。deactivate退出環境,回到系統 Python。- 透過
venv,避免相依性衝突、污染全局環境,確保環境一致性。
這樣,你的 Python 開發環境就能更乾淨、可控,讓每個專案獨立運行! 🚀
沒有留言:
張貼留言