iT邦幫忙

2025 iThome 鐵人賽

DAY 24
0

在使用 Python 開發時,虛擬環境(Virtual Environment) 幾乎可以說是必備工具,無論是在小型專案、團隊合作專案,還是管理複雜的相依套件,環境隔離與套件管理始終是開發效率與穩定性的關鍵。

今天將分別介紹venvpoetryuv三種不同的虛擬環境,幫助你了解各自的特色、適用場景與實務操作。

為什麼需要虛擬環境?

想想當今天專案A使用的是Django 3.2版本,專案B使用的是Django 5.0版本,如果安裝在同一個環境中肯定會有衝突!
再者,在開發過程中想嘗試新的套件調整功能的便利性時,安裝了些測試套件或是不必要的套件,長期下來會讓整個環境污染,最後則是缺乏獨立的環境,團隊協作在部署專案時可能造成依賴不一致。

因此,虛擬環境的重要性就出現了!

  1. 隔離
  2. 可控制
  3. 可重現

venv

建立虛擬環境

python3 -m venv .venv

啟動虛擬環境

source .venv/bin/activate

停用虛擬環境

deactivate

安裝套件

pip3 install django

優點

  1. 內建模組,不需要額外安裝。
  2. 輕量,只做隔離,沒有額外功能。
  3. 通用性強。

缺點

  1. 功能較陽春,只能做環境的隔離,沒有相依管理。
  2. 要自己 pip3 freeze > requirements.txt。
  3. 缺乏自動化,大型專案或多人協作常不夠用

poetry

現在的poetry有以2.0前後區分版本,在操作上有些微的不同。
使用poetry時會產生兩個重要的檔案,分別是pyproject.tomlpoetry.lock,前者為專案的基本配置後者為記錄每個套件的確切版本號,確保在不同環境中安裝完全相同的依賴版本。

安裝 poetry

pip3 install poetry

2.0 之前:
建立虛擬環境

poetry init -n

進入虛擬環境

poetry shell

停用虛擬環境

exit

安裝套件

poetry add django

2.0 之後:
建立虛擬環境

poetry init -n

啟動虛擬環境

poetry env use python3
poetry env activate
source /Users/jeter.chen/projects/test2/.venv/bin/activate

停用虛擬環境

deactivate

安裝套件

poetry add django

優點

  1. 整合性強,虛擬環境、依賴管理、套件一應俱全。
  2. 版本可重現,poetry.lock file 讓團隊環境一致。
  3. 語法簡潔,poetry add / remove 直觀好記。

缺點

  1. 啟動時會比.venv慢些。
  2. 相依解析耗時,大量套件下可能卡住。
  3. 限制較多,需遵循poetry的工作流程,對傳統習慣的開發者可能需要適應。

uv

最大的特色就是速度極快!這是一個用 Rust 編寫的極速 Python 包管理器,和 pip 大概快了 10~100 倍。

安裝虛擬環境

brew install uv

啟動虛擬環境

uv venv
source .venv/bin/activate

安裝套件

uv add django

停用虛擬環境

deactivate

優點

  1. 安裝快速,底層為 Rust,相比 pip / poetry 快數倍。
  2. 支援 PEP 標準,與現代 Python 生態完全兼容。
  3. 多合一設計,可以取代pipvenvpoetry的部分功能。

缺點

  1. 目前還在快速發展,生態工具與文件還不夠完整。
  2. 新技術門檻,相對前兩個虛擬環境發展歷史不長,所以比較少知道。

那麼今天就介紹到這,明天見ㄅㄅ!


上一篇
筆記Day23:裝飾器 Decorator
系列文
Python 學習筆記24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言