作为一名长期与 Python 打交道的开发者,我深知环境管理的痛苦。每次开始新项目,都要面对 pip、venv、pyenv、poetry 等工具的割裂体验。直到遇到 uv,这个由 Astral(Ruff 的幕后团队)开发的 Rust 工具,彻底改变了我的工作流。
uv 的核心优势在于它的"多合一"设计。它整合了包管理(pip)、虚拟环境(venv)、Python 版本管理(pyenv)和依赖锁定(pip-tools)的功能,而且速度惊人 - 在我的测试中,安装常见依赖比 pip 快 10-100 倍。最棒的是,它只是一个独立的可执行文件,不需要系统预装 Python。
提示:如果你经常需要在不同 Python 版本间切换,或者厌倦了管理多个工具,uv 绝对值得一试。
由于 uv 是用 Rust 编写的,在 Windows 下运行需要 Visual C++ Runtime 支持。如果你遇到 VCRUNTIME140.dll 缺失的错误,说明需要安装这个运行时库。
我推荐从微软官网下载最新的 x64 版本。安装完成后,建议重启电脑以确保 DLL 被正确加载。这一步看似简单,但很多开发者都会忽略,导致后续使用出现问题。
在安装 uv 前,建议检查以下系统配置:
这是我最推荐的安装方式,它能确保 uv 的所有功能完整可用。打开 PowerShell 执行:
powershell复制powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
这个脚本会将 uv 安装在 ~/.local/bin 目录下。安装完成后,你需要:
%USERPROFILE%\.local\bin 添加到系统 Path 环境变量注意:如果你遇到网络问题,可以尝试设置临时代理或使用国内镜像。
对于 Win10/11 用户,微软的包管理器 winget 是最便捷的选择:
cmd复制winget install --id=astral-sh.uv -e
这种方式安装的 uv 会自动添加到系统 Path,无需额外配置。但缺点是版本更新可能比官方脚本稍慢。
虽然可以 pip install uv,但我不建议这样做。因为:
传统方式需要手动创建虚拟环境和项目结构,而 uv 只需一条命令:
bash复制uv init my-awesome-project
cd my-awesome-project
这会自动生成:
pyproject.toml:项目配置文件.venv:虚拟环境目录hello.py:入门脚本不再需要手动下载 Python 安装包:
bash复制uv python install 3.12
uv 会自动:
添加依赖时,uv 会自动处理虚拟环境:
bash复制uv add requests pandas
这个命令会:
.venvuv.lock 锁定文件告别繁琐的 activate 步骤:
bash复制uv run hello.py
uv 会自动在当前虚拟环境中执行脚本,这在快速测试时特别方便。
| 特性 | 传统工具 (pip/venv/pyenv) | uv |
|---|---|---|
| 安装速度 | 较慢 | 极快 (Rust 核心) |
| 版本管理 | 需要 pyenv | 内置 |
| 依赖锁定 | 手动生成 requirements.txt | 自动 uv.lock |
| 磁盘占用 | 每个环境重复下载 | 全局缓存+硬链接 |
| 工具链 | 多个工具组合 | 单一二进制文件 |
如果 where uv 找不到命令,检查:
%USERPROFILE%\.local\bin 到 Path可以设置国内镜像加速:
powershell复制$env:UV_INDEX_URL="https://pypi.tuna.tsinghua.edu.cn/simple"
在 Windows 上,如果遇到权限错误,可以:
在实际项目中,uv 给我最大的惊喜是它的速度。一个原本需要 5 分钟的依赖安装过程,现在只需 10 秒。而且全局缓存机制确实节省了大量磁盘空间。
对于团队协作,uv.lock 文件确保了环境的一致性。我们不再需要维护复杂的 requirements.txt,也不用担心不同成员环境不一致导致的问题。
最后一个小技巧:如果你需要同时管理多个 Python 版本,可以这样快速切换:
bash复制uv python use 3.11
uv python use 3.12