DEEP 186 · 第十六辑 · 小白基础课 · LEARN NOTES

收进学习手册 · 2026-09-11 · duck.whatled.com

解读 186 · Python 环境:uv 入门

解读对象:概念课 · 以 docs/进阶学习文档-训练仿真与部署.md §1 为教材
需要的前置:零基础可读;装好后第一次看曲线见解读 185

"环境问题"是新手第一周最大的时间黑洞:装了一个包,另一个项目就坏了。本篇讲这个仓库为什么用 uv 代替 pip,以及 uv sync、uv run 两个命令。类比一套"菜谱与厨房":项目文件是菜谱,虚拟环境是厨房。

为什么不用 pip:每个项目一个独立厨房

pip 把包装进系统 Python,像所有菜共用一口锅:这个项目要 A 版本,那个项目要 B 版本,早晚串味。uv 给每个项目发一间独立厨房(项目目录下的 .venv),锅碗瓢盆互不干扰;它又用 Rust 写成,装依赖比 pip 快一个量级。安装只要一行(进阶文档 §1.1):

curl -LsSf https://astral.sh/uv/install.sh | sh

uv sync:照着菜谱把厨房备齐

菜谱就是仓库里的依赖清单(pyproject/锁文件):写清要哪些"食材"、什么版本、精确到可复现。cd microduck_rl 后执行(§1.3):

export UV_HTTP_TIMEOUT=600   # 依赖多,防超时
uv sync

uv sync 读菜谱,把厨房一次备齐:缺什么装什么,版本按锁文件来,不凭记忆。同一份代码,你和别人、这台机和那台机,得到的厨房是一样的——这对"实验可复现"是底线要求。第一次下载量大属正常;UV_HTTP_TIMEOUT=600 是文档给的经验值:依赖多,默认超时容易中途断。

uv run:在这间厨房里做这道菜

跑脚本不直接敲 python,而是 uv run 命令——它会自动用当前项目的厨房,不碰系统。文档 §1.5 的自检:

uv run train Mjlab-Velocity-Flat-MicroDuck --env.scene.num-envs 64 --agent.max-iterations 5

本项目的真实记录也都这么跑:第 1 天实验记录里是同款命令加 --agent.logger tensorboard(docs/microduck-30day/experiments/day-01-lesson-01.md);看曲线是 uv run tensorboard --logdir logs/rsl_rl --port 6006(docs/course/06)。记住分工:uv sync 管厨房,uv run 管做菜,你几乎永远不需要手动"激活"什么环境。

你带走的收获

延伸

什么鸭 WHATDUCK · 复刻学习笔记 ← 全部手册 · 首页