測驗:為什麼選擇 uv?告別 pip 的痛點
共 5 題,點選答案後會立即顯示結果
1. uv 是用什麼程式語言編寫的?
2. 以下哪一項「不是」pip 的常見痛點?
3. uv 相比 pip 的速度優勢大約是多少?
4. 使用 uv 建立虛擬環境的正確指令是什麼?
5. uv 的依賴解析器(resolver)相比 pip 有什麼優勢?
一句話說明
uv 是用 Rust 寫的 Python 套件管理器,速度比 pip 快 10-100 倍,一個工具搞定套件安裝和虛擬環境。
前言:pip 用了這麼久,為什麼要換?
如果你用過 Python 一段時間,應該體驗過這些痛苦:
- 安裝套件慢到喝完一杯咖啡:
pip install跑個幾分鐘是家常便飯 - 依賴地獄:A 套件要 numpy 1.20,B 套件要 numpy 1.24,pip 說「我選 1.24」,結果 A 壞掉
- 虛擬環境好煩:每次都要
python -m venv、source activate,還常常搞混哪個環境
uv 就是來解決這些問題的。
pip 的三大痛點
痛點 1:速度慢
pip 用純 Python 寫的,處理依賴解析時效率不高。裝一個有很多依賴的套件(像 pandas),常常要等好幾分鐘。
# 傳統 pip 安裝
pip install pandas
# 可能要跑 2-3 分鐘...
Code language: PHP (php)痛點 2:依賴解析不完善
pip 的依賴解析器(resolver)在 2020 年才改版,但還是會遇到問題:
# 你想裝這兩個套件
pip install package-a package-b
# 結果發現它們要求不同版本的共同依賴
# pip 可能選一個「能裝」但「不一定能跑」的版本
Code language: PHP (php)pip 只確保「能安裝」,不保證「能正常運作」。
痛點 3:虛擬環境要額外處理
pip 本身不管虛擬環境,你需要:
# 1. 先建立虛擬環境
python -m venv .venv
# 2. 啟動它
source .venv/bin/activate # Linux/macOS
# 或
.venv\Scripts\activate # Windows
# 3. 然後才能裝套件
pip install requests
Code language: PHP (php)三個步驟,每次開新專案都要重複,而且常常忘記啟動環境就直接 pip install,結果裝到系統全域。
uv 是什麼?
uv 是 Astral 公司開發的 Python 套件管理器。Astral 也是 Ruff(超快的 Python linter)的開發團隊。
核心特點:
| 特點 | 說明 |
|---|---|
| Rust 編寫 | 效能極高,比純 Python 快很多 |
| 一體化工具 | pip + venv + pip-tools 合而為一 |
| pip 相容 | 指令幾乎一樣,學習成本低 |
uv 的優勢
優勢 1:速度快 10-100 倍
uv 用 Rust 寫的,處理依賴解析和下載都經過優化:
# uv 安裝 pandas
uv pip install pandas
# 通常 10 秒內搞定
Code language: PHP (php)實測數據(安裝 Django + 所有依賴):
- pip:約 45 秒
- uv:約 1.5 秒
這不是誇張,是真的快 30 倍。
優勢 2:更好的依賴解析
uv 的 resolver 更嚴格,會在安裝前就告訴你有衝突:
# uv 發現衝突時會明確告訴你
$ uv pip install package-a package-b
error: Cannot install package-a and package-b
package-a requires numpy>=1.20,<1.22
package-b requires numpy>=1.24
Code language: HTML, XML (xml)不會裝完才發現跑不起來。
優勢 3:內建虛擬環境管理
uv 直接整合虛擬環境:
# 一個指令建立並進入虛擬環境
uv venv
# 直接在虛擬環境中安裝(自動偵測)
uv pip install requests
Code language: PHP (php)不用手動 activate,uv 會自動找到專案目錄下的 .venv。
優勢 4:pip 指令相容
已經熟悉 pip?uv 的指令幾乎一樣:
# pip 指令
pip install requests
pip install -r requirements.txt
pip freeze
# uv 對應指令(前面加 uv)
uv pip install requests
uv pip install -r requirements.txt
uv pip freeze
Code language: CSS (css)安裝 uv
Linux / macOS
curl -LsSf https://astral.sh/uv/install.sh | sh
Code language: JavaScript (javascript)Windows(PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Code language: JavaScript (javascript)用 pip 安裝
pip install uv
用 Homebrew(macOS)
brew install uv
用 pipx(隔離安裝)
pipx install uv
驗證安裝
安裝完成後,確認 uv 可以正常運作:
uv --version
應該會看到類似輸出:
uv 0.5.17 (26f4b6293 2025-01-22)
Code language: CSS (css)如果出現「command not found」,表示 uv 還沒加入 PATH。重新開啟終端機,或手動加入:
# Linux/macOS(加入 .bashrc 或 .zshrc)
export PATH="$HOME/.local/bin:$PATH"
Code language: PHP (php)第一個 uv 指令
讓我們用 uv 建立虛擬環境並安裝第一個套件:
# 1. 建立虛擬環境
uv venv
# 2. 安裝 requests 套件
uv pip install requests
# 3. 確認安裝成功
uv pip list
Code language: PHP (php)你會看到 requests 和它的依賴都被安裝了,而且整個過程只需要幾秒鐘。
Vibe Coder 檢查點
當你在專案中看到以下內容時:
- [ ] 看到
uv開頭的指令:這是新的套件管理器,比 pip 快 - [ ] 看到
uv pip install:跟pip install一樣,只是用 uv 執行 - [ ] 看到
uv venv:建立虛擬環境,跟python -m venv類似 - [ ] 看到
.venv目錄:這是虛擬環境,不用提交到 git
對 Vibe Coding 的幫助
學會 uv 之後,你可以:
- 更快速地設定開發環境:當 AI 說「先建立虛擬環境」,你知道
uv venv一個指令就搞定,不用再查 venv 怎麼用 - 更準確地告訴 AI 環境資訊:當 AI 產生的程式碼有套件衝突,你可以說「uv 說 numpy 版本衝突,請幫我調整 requirements.txt」
- 更有效率地除錯:當 AI 說「先安裝這些套件」,你可以用
uv pip install -r requirements.txt在幾秒內完成,不用等好幾分鐘
總結
| 比較項目 | pip | uv |
|---|---|---|
| 安裝速度 | 慢 | 快 10-100 倍 |
| 依賴解析 | 可能有問題 | 更嚴格準確 |
| 虛擬環境 | 需額外工具 | 內建整合 |
| 學習成本 | – | 幾乎相同指令 |
uv 是 pip 的現代替代品。如果你厭倦了 pip 的慢速和依賴問題,現在是切換的好時機。
下一篇,我們會深入介紹 uv 的虛擬環境管理功能。
進階測驗:為什麼選擇 uv?告別 pip 的痛點
共 5 題,包含情境題與錯誤診斷題。
1. 你剛加入一個新的 Python 專案,需要設定開發環境。專案使用 requirements.txt 管理依賴。你想用 uv 來加速安裝過程。應該執行哪些指令? 情境題
2. 你的同事說:「我用 pip 裝套件太慢了,但我已經習慣 pip 的指令,不想學新的。」你會怎麼建議他? 情境題
3. AI 幫你生成了一段程式碼,執行時出現套件衝突。你想用 uv 來診斷問題。哪個做法最有效? 情境題
4. 小明在新電腦上安裝了 uv,但執行指令時出現錯誤: 錯誤診斷
最可能的原因是什麼?
5. 小華安裝完 uv 後執行以下指令,但出現錯誤: 錯誤診斷
最可能的原因和解決方法是什麼?