你输入 pip install pandas。
加载动画开始转动。屏幕停在那里 30 秒,有时是一分钟。若是全新环境,甚至需要更久。
现在想象同样的安装在不到 2 秒内完成。
这就是 uv。
什么是 uv
uv 是一个用 Rust 编写的 Python 包管理器,由 Ruff 背后的团队开发(Ruff 是在 2024 年风靡 Python 的代码检查工具)。
可以把它看作是 pip、virtualenv、pyenv、pip-tools 和 pipx 的一体化替代方案,全部打包成一个 2MB 的二进制文件。
一个工具,涵盖整个 Python 工具链。
速度差异
这是亮点,而且非常明显。
冷安装时更快,缓存已热时更快。
为什么?原因有三:
1 Rust,而非 Python。编译型,而非解释型。
2 并行下载。pip 一次只抓一个包,uv 会同时抓取所有包。
3 全局缓存。安装一次 numpy,接下来的 50 个项目瞬间可用——无需重新下载或解压。
安装 uv
你甚至不需要先安装 Python 就能安装 uv。
# macOS / Linuxcurl -LsSf https://astral.sh/uv/install.sh | sh#Windows (PowerShell)powershell -c "irm https://astral.sh/uv/install.ps1 | iex"#或通过 brewbrew install uv检查是否安装成功:
检查是否安装成功,
实用命令
1 创建新项目
这会创建:
my-app/├── .python-version # 固定 Python 版本├── pyproject.toml # 项目 + 依赖├── main.py└── README.md
不用再执行 python -m venv .venv + pip install -r requirements.txt + source .venv/bin/activate。
一个命令就能搞定。
2 添加依赖
uv add requestsuv add pandas numpy matplotlib
这会:
安装包
更新 pyproject.toml
更新 uv.lock(锁文件)
如果虚拟环境不存在则创建
一步完成。
3 添加仅开发用依赖
uv add --dev pytest ruff mypy
开发依赖与运行时依赖分开,生产构建更干净。
4 移除依赖
这是 uv 悄悄超越 pip 的地方。
pip uninstall requests 只删除 requests,留下所有中间依赖包,慢慢堆积在你的环境里。
uv remove 会同时清理孤立依赖。
5 运行代码
uv run main.pyuv run pytest
无需 source .venv/bin/activate,无需担心用的是哪版 Python。
uv run 会自动激活该命令需要的环境。
6 从锁文件同步
当你克隆仓库或拉取新变更时使用。它会重建环境,完全匹配 uv.lock——在 macOS、Linux、Windows 上可重现。
这就是“在我机器能跑在你机器上崩溃”的终结者。
7 管理 Python 版本
不再需要 pyenv。
uv python install 3.12uv python install 3.13uv python pin 3.12
uv 会为你下载并管理 Python 版本。
8 安装全局工具(替代 pipx)
uv tool install ruffuv tool install black
全局隔离安装,不污染任何项目环境。
从 pip 迁移
这是大多数开发者担心的部分,实际情况是毫无痛苦。
如果项目使用 requirements.txt:
cd my-existing-projectuv init # 创建 pyproject.tomluv pip install -r requirements.txt # 安装到新 venv
uv pip 前缀是兼容层,它接受 pip 的所有参数。此时你可以把 uv 当作“更快的 pip”。
或者全面采用 uv:
uv add $(cat requirements.txt)
它会把依赖转换为 pyproject.toml 和 uv.lock。
如果项目使用 Poetry:
就这样,你的 pyproject.toml 已转换为 uv 格式。
何时继续用 pip
老实说,uv 并非适用于所有场景。
继续用 pip 的情况:
其他情况 -> 新项目、附带项目、追求速度与可重现性,uv 更佳。
真实案例对比
搭建新的 FastAPI 项目。
用 pip:
mkdir my-api && cd my-apipython -m venv .venvsource .venv/bin/activatepip install fastapi uvicorn sqlalchemypip freeze > requirements.txt
5 条命令,约 40 秒。
用 uv:
uv init my-api && cd my-apiuv add fastapi uvicorn sqlalchemy
2 条命令,约 3 秒,直接得到真实锁文件,而非在不同操作系统下容易出问题的 pip freeze。
uvx——运行工具而无需安装
这是被低估的功能。
uvx 可以在临时隔离环境中运行 Python CLI 工具,无需在系统中安装。
uvx ruff check .uvx black my_script.pyuvx pycowsay "Hello"
首次运行,uv 会把工具下载到缓存,之后运行瞬间完成。
可以把它看作 Python 的 npx。
为什么有用
你不总是想安装工具。有时只想运行一次:
在提交前尝试单文件 linter
运行一次性 CLI 而不污染全局 Python
针对某个命令使用特定版本工具
# 尝试 black 而不全局安装uvx black .# 使用特定版本uvx black@24.10.0 .# 从不同包运行工具uvx --from httpie http GET httpbin.org/get
uvx 与 uv tool install
常见混淆点:
尝试新东西用 uvx,每天都用的工具用 uv tool install。
真实案例
# 提交前格式化项目uvx ruff format .# 运行 pytest 不污染项目依赖uvx pytest# 从 cookiecutter 模板生成项目uvx cookiecutter gh:audreyr/cookiecutter-pypackage# 终端快速发起 HTTP 请求uvx --from httpie http POST httpbin.org/post hello=world
无虚拟环境,无 pip 安装,无清理烦恼。
pip 已经作为 Python 默认包管理工具18年了,稳定且无处不在,现在依然有效。
但 uv 解决了 pip 从未尝试过的问题:
速度显著提高,改变 CI 成本与反馈周期
一个工具替代五个
跨平台锁文件真正可用
干净卸载,不留垃圾
2026 年的新项目,没有理由从 pip 开始。
第一次 uv sync 完成得比你手指敲键盘还快时,你就会明白。 :)
https://medium.com/stackademic/uv-vs-pip-why-every-python-developer-should-switch-in-2026-d6c3f891f7b1