uv 能将 Python 项目初始化、依赖安装、环境切换压缩为“一次敲回车”:uv init 自动创建并激活虚拟环境,uv add 替代 pip install 并自动生成带哈希的 uv.lock,uv run 直接调用项目环境或临时工具,全程强一致性、可复现、提速显著。

uv 能直接把 Python 项目初始化、依赖安装、环境切换这三步压缩成“一次敲回车”——不是理论提速,是真实省下每分钟等待。
uv init 自动创建并激活虚拟环境
传统流程要手动执行 python -m venv .venv → source .venv/bin/activate(Linux/macOS)或 .venv\Scripts\activate.bat(Windows)→ 再确认 which python 或 where python 是否指向虚拟环境。稍有疏忽就装到系统 Python 里。
uv init myproject 一步完成全部:建目录、选 Python 版本(默认用 PATH 中最新)、创建隔离环境、自动激活(终端提示符立刻显示 (myproject)),且后续所有 uv add 或 uv run 命令都默认作用于该环境。
- 不指定 Python 版本时,
uv init会优先找 3.14(2026 年 uv 默认倾向的稳定版),而非系统自带的 3.8 或 3.9 - 如果项目根目录已有
pyproject.toml,uv init会读取其中[build-system]配置,避免覆盖已有元数据 - Windows 用户要注意:PowerShell 默认禁用脚本执行,首次运行可能报错
ExecutionPolicy,需先运行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
uv add 替代 pip install + 自动处理传递依赖
装 fastapi 时,pip install fastapi 只装它本身;但 uv add fastapi 会同时拉取 starlette、pydantic-core、typing-extensions 等 runtime 依赖,并写入 uv.lock —— 这个文件记录了每个包的 exact version + SHA256 hash,不是靠 pip freeze > requirements.txt 那种模糊快照。
立即学习“Python免费学习笔记(深入)”;
Python 环境工具专业版功能概述Python 环境工具专业版是一项面向实际任务的技能。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。核心要点使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。执行完成后建议检查结果是否符合预期,并保留必要记录。使用与执行同时注意输入完整性、执行条件和输出可用性。从功能定位来看,该技能
常见错误现象:uv add requests 后运行时报 ImportError: cannot import name 'HTTPAdapter' from 'requests.adapters',大概率是本地缓存中混入了被破坏的 wheel 包。此时执行 uv cache clean 即可清掉 ~/.cache/uv 下所有二进制缓存,下次重装即用全新包。
-
uv add --dev pytest black会把包写进pyproject.toml的[project.optional-dependencies.dev]段,而不是全局[project.dependencies] - 若项目含
requirements.txt,可用uv add -r requirements.txt一次性迁移,uv 会解析每一行并自动补全传递依赖 - 不加
--no-dev时,uv sync默认同步 dev 依赖;生产部署应显式加该 flag 避免多装测试工具
uv run 替代 python -m + 全局工具调用
以前想跑一个脚本又不想激活环境?得写 .venv/bin/python main.py(Linux/macOS)或 .venv\Scripts\python.exe main.py(Windows)。现在只要 uv run main.py,uv 自动找到当前项目的虚拟环境并执行。
更关键的是,它还能直接运行未安装的 CLI 工具:uv run ruff check . 不需要提前 pip install ruff,uv 会临时下载、缓存、执行,用完即弃——适合 CI 场景或偶尔使用的工具,避免污染环境。
-
uv run默认使用项目 lock 文件锁定的依赖版本;若想临时跳过锁文件强制解析最新版,加--no-lock(慎用,可能破坏确定性) - 执行
uv run python -c "import sys; print(sys.version)"可快速验证当前环境 Python 版本,比python --version更可靠(后者可能指向系统 Python) - 在 Jupyter Notebook 中,通过
uv venv --python 3.12创建专用环境后,再运行python -m ipykernel install --user --name myproject --display-name "Python (myproject)",就能在 notebook kernel 列表里看到对应环境
真正容易被忽略的是:uv 的“快”不是靠牺牲一致性换来的——它默认启用哈希校验、强制生成 lock 文件、所有操作可复现。当你在 CI 流水线里把 pip install -r requirements.txt 换成 uv sync,不仅构建时间从 2 分钟降到 8 秒,更关键的是,那个曾经在本地能跑、CI 上报 ModuleNotFoundError 的幽灵问题,基本不会再出现。

















