【uv 套件管理器教學】#01 為什麼選擇 uv?告別 pip 的痛點

測驗:為什麼選擇 uv?告別 pip 的痛點

共 5 題,點選答案後會立即顯示結果

1. uv 是用什麼程式語言編寫的?

  • A. Python
  • B. Rust
  • C. Go
  • D. C++

2. 以下哪一項「不是」pip 的常見痛點?

  • A. 安裝套件速度慢
  • B. 依賴解析可能有問題
  • C. 需要額外工具管理虛擬環境
  • D. 不支援 requirements.txt

3. uv 相比 pip 的速度優勢大約是多少?

  • A. 快 2-3 倍
  • B. 快 5-10 倍
  • C. 快 10-100 倍
  • D. 快 1000 倍以上

4. 使用 uv 建立虛擬環境的正確指令是什麼?

  • A. uv create venv
  • B. uv venv
  • C. uv pip venv
  • D. uv init venv

5. uv 的依賴解析器(resolver)相比 pip 有什麼優勢?

  • A. 會自動忽略所有版本衝突
  • B. 會在安裝前就明確告訴你有衝突
  • C. 會自動選擇最新版本解決衝突
  • D. 不需要解析依賴,直接安裝

一句話說明

uv 是用 Rust 寫的 Python 套件管理器,速度比 pip 快 10-100 倍,一個工具搞定套件安裝和虛擬環境。

前言:pip 用了這麼久,為什麼要換?

如果你用過 Python 一段時間,應該體驗過這些痛苦:

  • 安裝套件慢到喝完一杯咖啡pip install 跑個幾分鐘是家常便飯
  • 依賴地獄:A 套件要 numpy 1.20,B 套件要 numpy 1.24,pip 說「我選 1.24」,結果 A 壞掉
  • 虛擬環境好煩:每次都要 python -m venvsource 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 對應指令(前面加 uvuv 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 來加速安裝過程。應該執行哪些指令? 情境題

  • A. pip install uv && uv install -r requirements.txt
  • B. uv init && uv install requirements.txt
  • C. uv venv && uv pip install -r requirements.txt
  • D. uv create venv && uv pip add requirements.txt

2. 你的同事說:「我用 pip 裝套件太慢了,但我已經習慣 pip 的指令,不想學新的。」你會怎麼建議他? 情境題

  • A. 建議他用 conda,因為 conda 的依賴解析更好
  • B. 建議他用 uv,因為指令幾乎相同,只要在 pip 前面加上 uv 就好
  • C. 建議他升級 Python 版本,新版 pip 會更快
  • D. 建議他用 poetry,因為 poetry 是目前最流行的套件管理器

3. AI 幫你生成了一段程式碼,執行時出現套件衝突。你想用 uv 來診斷問題。哪個做法最有效? 情境題

  • A. 執行 uv pip check 檢查已安裝套件的相容性
  • B. 刪除 .venv 目錄,重新用 pip install 安裝
  • C. 升級所有套件到最新版本:uv pip install --upgrade-all
  • D. 用 uv pip install 重新安裝,讓 uv 的 resolver 在安裝前明確告訴你衝突在哪

4. 小明在新電腦上安裝了 uv,但執行指令時出現錯誤: 錯誤診斷

$ uv pip install requests error: No virtual environment found

最可能的原因是什麼?

  • A. uv 沒有正確安裝
  • B. 還沒有建立虛擬環境,需要先執行 uv venv
  • C. requests 套件已經被棄用
  • D. 需要先啟動虛擬環境:source .venv/bin/activate

5. 小華安裝完 uv 後執行以下指令,但出現錯誤: 錯誤診斷

$ uv –version command not found: uv

最可能的原因和解決方法是什麼?

  • A. uv 安裝失敗,需要重新下載安裝檔
  • B. 需要用 sudo 權限執行 uv
  • C. uv 還沒加入 PATH,需要重新開啟終端機或手動加入 export PATH="$HOME/.local/bin:$PATH"
  • D. macOS 不支援 uv,需要用 Homebrew 版本

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *