🐍 快速定位 / 入口 >>>
uv 把 Python 安装、虚拟环境、依赖锁定、脚本运行和工具分发收进了一套 workflow。
uv inituv adduv runuv pythonuv tool uvx:/uv pip
🚀 起手式:从 0 到可运行项目 >>>
最常见路径是“初始化项目 -> 加依赖 -> 运行 -> 锁定 -> 同步”。
uv init --app demo:新建应用项目uv add httpx rich:添加运行依赖uv run python main.py:在项目环境里执行uv lock uv.lock:生成或更新uv sync --frozen:按锁文件还原环境
uv init --app demo
cd demo
uv add httpx rich
uv run python main.py
uv lock
uv sync --frozen
📦 Recipe:快速开一个可发布包 >>>
适合“我要做一个库并且以后准备发布到 PyPI”的场景。
uv init --package demo-lib:按包结构初始化uv add pydantic:加运行依赖uv add --dev pytest ruff:加开发依赖uv build:构建分发包uv publish:发布到 PyPI
uv init --package demo-lib
cd demo-lib
uv add pydantic
uv add --dev pytest ruff
uv run pytest
uv build
▶️ Recipe:把命令、测试、脚本都收进同一环境 >>>
这是 uv 最省事的用法,重点是“不要手动 source `.venv`”。
uv run python script.py:跑脚本uv run pytest:跑测试uv run ruff check .:跑代码检查uv run --with rich script.py:临时附带额外依赖uv run --python 3.12 python -V:指定解释器版本
uv run pytest
uv run ruff check .
uv run --with httpx python -c "import httpx; print(httpx.get('https://example.com').status_code)"
Recipe:只想临时执行工具,不想污染项目
uv tool install ruffuv tool upgrade ruffuv tool listuvx ruff check .uvx --python 3.12 mypy src
uv tool install ruff
uvx pycowsay "hello"
uvx --python 3.12 mypy src
🧰 Recipe:管理 Python 版本,不再手装解释器 >>>
适合“项目要锁 Python 版本”或者“本机要并存多个 Python”的场景。
uv python install 3.12:安装解释器uv python list:查看可用版本uv python find 3.11:查找指定版本uv python pin 3.12:当前目录固定版本uv venv --python 3.12:按指定解释器建环境
uv python install 3.11 3.12
uv python pin 3.12
uv venv
uv run python -V
🔁 Recipe:从 requirements.txt 迁到 uv,但别一次全重构 >>>
迁移旧项目时,先用 `uv pip` 兼容层稳住,再逐步切 `pyproject.toml`。
uv pip install -r requirements.txt:先让旧项目跑起来uv pip compile requirements.in -o requirements.txt:生成锁定版本uv pip sync requirements.txt:同步环境uv add uv lock
uv venv
uv pip install -r requirements.txt
uv pip freeze > requirements.lock.txt
🧩 Recipe:CI / Docker / 团队协作的稳妥姿势 >>>
团队环境最重要的是“锁文件确定性”和“缓存目录复用”。
uv sync --frozenUV_CACHE_DIR- 固定 Python 版本,避免 runner 漂移
uv syncuv sync --all-packages
uv sync --frozen
uv run pytest
uv run ruff check .
⚠️ 常见坑 / 决策规则 >>>
真正常见的问题不是命令记不住,而是模式混用。
uv run uvxuv sync --frozen uv.lockrequirements.txt pyproject.toml- 私有源通常还要补认证配置,否则“解析成功、下载失败”很常见
- 想让团队一致,优先锁 Python 版本,再锁依赖版本