less than 1 minute read

pip 會有一些痛點

  • 無法釐清主要套件與dependencies
  • 主要套件有共同的dependencies 容易產生衝突

若使用 pyproject.toml 配合uv 可以解決這個問題

quickstart

創建一個基礎的toml

[project]
name = "demo_project"
version = "0.1.0"
description = "for demo uv"
readme = "readme.md"
requires-python = ">=3.12"
uv add fastapi
# It actually does
  - create
  - update pyproject.toml
  - analyze all dependencies
[project]
name = "demo_project"
version = "0.1.0"
description = "for demo uv"
readme = "readme.md"
requires-python = ">=3.12"
dependencies = [
    "fastapi>=0.121.0",
]

uv 基礎使用


uv python list
# 目前uv支援的python版本

uv init -p <python版本>
# uv init -p 3.12
# 初始化
# 1. toml template
# 3. .python-version 若要換python版本,可直接編輯
# 4. .hello.py  沒用,可刪

uv add <套件名稱>
# uv add pydantic

# 實際上會
# 1. 創建虛擬環境 .venv
# 2. 更新 pyproject.toml dependencies

uv add --dev
# 安裝開發依賴 例如pytest black ...

uv tree
# 顯示依賴關係

uv tool install <套件名稱>
# 安裝工具類的套件,不會在該虛擬環境,而是在系統中創建,且為獨立,不會與其他套件衝突

uv tool list

uv upgrade
# 升級特定套件,會自動整體的dependencies
# uv upgrade fastapi@0.111.5

遷移環境

需打包

  • pyproject.toml
  • uv.lock
  • 該專案相關檔案
uv sync
# 安裝環境


uv sync --dev
# 安裝開發工具環境