文章目录
- 传统 Python 工具链(pip + venv + setuptools)存在以下问题: 问题 具体表现 速度慢 pip 安装大型依赖(如 torch)需数分钟;创建虚拟环境需复制整个标准库 不一致 不同机器上 pip install 可能因缓存、网络、平台差异导致结果不同 功能割裂 需组合多个工具(pip, venv, pyenv, poetry 等),学习成本高 无内置版本管理 切换 Python 版本需额外安装 pyenv 或手动配置
- uv 用 Rust 重写了底层逻辑,利用其内存安全、零成本抽象和并行能力,实现了数量级的速度提升。官方基准测试显示: 创建虚拟环境:比 venv 快 10–100 倍 安装依赖:比 pip 快 10–100 倍 解析依赖:比 pip-tools 快 50 倍以上 更重要的是,uv 完全兼容 pip 的命令行接口和 requirements.txt 格式,几乎无需修改现有项目即可迁移。
- Windows(x64 / ARM64) macOS(Intel / Apple Silicon) Linux(glibc / musl)
-
- # Linux / macOS curl -LsSf https://astral.sh/uv/install.sh | sh # Windows (PowerShell) irm https://astral.sh/uv/install.ps1 | iex 安装后,将 ~/.cargo/bin(或 Windows 的 %USERPROFILE%.cargobin)加入 PATH。 提示:即使你没有 Rust 环境,该脚本也会自动下载预编译的二进制文件。
- # Homebrew (macOS/Linux) brew install uv # Scoop (Windows) scoop install uv # Arch Linux (AUR) yay -S uv-bin
- 访问 https://github.com/astral-sh/uv/releases 下载对应平台的 .tar.gz 或 .zip 文件,解压后将 uv 可执行文件放入 PATH。
- uv –version # 输出示例:uv 0.5.0 (abc123d)
-
- # 创建名为 .venv 的虚拟环境(默认行为) uv venv # 指定路径 uv venv myenv # 指定 Python 版本(需先安装该版本,见 3.3 节) uv venv –python 3.11
- 工具 时间(macOS M1) python -m venv .venv ~800ms uv venv ~10ms 优势:不复制标准库,而是通过符号链接(symlink)实现,启动速度极快。
- 与传统方式一致: # Linux/macOS source .venv/bin/activate # Windows (PowerShell) ..venvScriptsActivate.ps1
- uv pip 完全兼容 pip 的 CLI 参数和 requirements.txt。
- # 安装单个包 uv pip install requests # 从 requirements.txt 安装 uv pip install -r requirements.txt # 安装开发依赖 uv pip install -e .
- # 指定索引源(兼容 pip 选项) uv pip install –index-url https://pypi.tuna.tsinghua.edu.cn/simple torch # 仅下载不安装(用于离线部署) uv pip download -r requirements.txt –dest ./wheels # 冻结依赖(输出当前环境的精确版本) uv pip freeze > requirements.lock
- 在一个包含 django, numpy, pandas, requests 的 requirements.txt 中: pip install -r requirements.txt:42 秒 uv pip install -r requirements.txt:1.8 秒 优势:并行下载、智能缓存、避免重复解析依赖树。
- 这是 uv 最令人兴奋的功能之一——内置 Python 版本管理!
- # 列出可用版本 uv python list –all # 安装指定版本(自动从 python.org 下载) uv python install 3.11 uv python install 3.12.1 # 安装最新 patch 版本 uv python install 3.11 –latest
- uv python list # 输出示例: # 3.11.9 /Users/you/.local/share/uv/python/3.11.9/bin/python3 # 3.12.1 /Users/you/.local/share/uv/python/3.12.1/bin/python3
- # 全局默认 uv python pin 3.11 # 项目级(在当前目录生成 .python-version) uv python pin 3.12.1 –project 优势:无需配置 shell 插件,开箱即用;自动处理 PATH;支持多平台预编译包。
- 用于安装命令行工具(如 black, ruff, poetry)到隔离环境中。 # 安装全局工具 uv tool install black uv tool install ruff # 运行工具(自动激活环境) black –version ruff check . # 列出已安装工具 uv tool list # 卸载 uv tool uninstall black 优势:比 pipx 更快,且与 uv 缓存共享,节省磁盘空间。
- Rust 实现:无 GIL 限制,充分利用多核。 并行下载与安装:同时处理多个包。 智能缓存:全局 wheel 缓存,避免重复编译。 符号链接虚拟环境:创建时间从秒级降至毫秒级。
- 完全支持 pip 的命令行参数。 读取 requirements.txt, pyproject.toml, setup.py。 生成的标准虚拟环境可被任何 IDE 识别。
- 过去你需要: pyenv → 管理 Python 版本venv → 创建虚拟环境pip → 安装包pipx → 安装全局工具 现在只需一个 uv: uv python install 3.11 # 版本管理 uv venv –python 3.11 # 虚拟环境 uv pip install -r reqs.txt # 包安装 uv tool install ruff # 全局工具
- 默认启用 –locked 模式(未来将强制),确保依赖解析结果一致。 支持 –dry-run 预览安装计划。 自动处理平台标签(如 manylinux, musllinux)。
- 短期内不会。uv 定位是 pip 的高性能替代品,而非破坏性革新。它尊重现有生态,目标是成为“更好的 pip”。
- 支持!所有 pip 的索引相关参数(–index-url, –extra-index-url, –trusted-host)均有效。
- 强烈推荐! 例如在 GitHub Actions 中: – name: Install uv run: curl -LsSf https://astral.sh/uv/install.sh | sh – name: Setup Python run: uv python install 3.11 – name: Create venv run: uv venv – name: Install deps run: uv pip install -r requirements.txt 可显著缩短 CI 时间。
- 完全支持!包括 PowerShell、CMD、WSL。虚拟环境路径、激活脚本均正确生成。
目录
- 引言:为什么我们需要一个新的 Python 工具?
- 一、什么是uv?它解决了什么问题?
- 1.1 背景:Python 工具链的“慢”痛点
- 1.2uv的诞生:Rust 带来的性能飞跃
- 二、下载与安装uv
- 2.1 支持平台
- 2.2 安装方式(推荐使用官方脚本)
- 方式一:一键安装脚本(跨平台)
- 方式二:包管理器安装
- 方式三:手动下载
- 2.3 验证安装
- 三、核心功能与命令详解
- 3.1uv venv:创建虚拟环境(替代python -m venv)
- 基本用法
- 性能对比
- 激活环境
- 3.2uv pip:安装 Python 包(替代pip install)
- 基本安装
- 高级用法
- 速度实测
- 3.3uv python:管理 Python 版本(替代pyenv)
- 安装 Python 版本
- 查看已安装版本
- 设置全局/本地 Python 版本
- 3.4uv tool:全局工具管理(替代pipx)
- 四、uv的核心优势总结
- 4.1 速度:数量级的提升
- 4.2 兼容性:无缝迁移
- 4.3 一体化:减少工具碎片
- 4.4 可靠性:确定性构建
- 五、实战:用uv初始化一个新项目
- 六、常见问题与注意事项
- Q1:uv会取代 pip 吗?
- Q2: 是否支持私有 PyPI 源?
- Q3: 能在 CI/CD 中使用吗?
- Q4: Windows 支持如何?
- 七、未来展望
- 结语:拥抱更快的 Python 开发体验
如果你曾经历过以下场景:
- 创建虚拟环境等了 30 秒;
- 安装
requirements.txt花了 5 分钟; - 在 CI/CD 中因 pip 缓存失效而超时失败;
- 想快速切换 Python 版本却要手动配置 PATH……
那么,你一定会对 uv ——这个由 Astral(Ruff 的作者)团队打造的超高速 Python 工具链——感到惊喜。
uv 不是一个单一工具,而是一套用 Rust 编写的、兼容现有生态的 Python 开发工具集合,包括:
- 包安装器(替代
pip) - 虚拟环境管理器(替代
venv/virtualenv) - Python 版本管理器(替代
pyenv) - 项目构建与发布工具(未来将替代
build/twine)
它的核心目标只有一个:极致速度 + 完全兼容。
本文将带你从零开始,全面掌握 uv 的下载、安装、核心命令使用,并深入剖析它为何被誉为“Python 工具链的未来”。
传统 Python 工具链(pip + venv + setuptools)存在以下问题:
| 问题 | 具体表现 |
|---|---|
| 速度慢 | pip 安装大型依赖(如 torch)需数分钟;创建虚拟环境需复制整个标准库 |
| 不一致 | 不同机器上 pip install 可能因缓存、网络、平台差异导致结果不同 |
| 功能割裂 | 需组合多个工具(pip, venv, pyenv, poetry 等),学习成本高 |
| 无内置版本管理 | 切换 Python 版本需额外安装 pyenv 或手动配置 |
uv 用 Rust 重写了底层逻辑,利用其内存安全、零成本抽象和并行能力,实现了数量级的速度提升。官方基准测试显示:
- 创建虚拟环境:比
venv快 10–100 倍 - 安装依赖:比
pip快 10–100 倍 - 解析依赖:比
pip-tools快 50 倍以上
更重要的是,uv 完全兼容 pip 的命令行接口和 requirements.txt 格式,几乎无需修改现有项目即可迁移。
- Windows(x64 / ARM64)
- macOS(Intel / Apple Silicon)
- Linux(glibc / musl)
# Linux / macOS
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
irm https://astral.sh/uv/install.ps1 | iex
安装后,将 ~/.cargo/bin(或 Windows 的 %USERPROFILE%.cargobin)加入 PATH。
提示:即使你没有 Rust 环境,该脚本也会自动下载预编译的二进制文件。
# Homebrew (macOS/Linux)
brew install uv
# Scoop (Windows)
scoop install uv
# Arch Linux (AUR)
yay -S uv-bin
访问 https://github.com/astral-sh/uv/releases 下载对应平台的 .tar.gz 或 .zip 文件,解压后将 uv 可执行文件放入 PATH。
uv --version
# 输出示例:uv 0.5.0 (abc123d)
uv 目前提供四大子命令:
uv pip:高性能包安装uv venv:极速虚拟环境uv python:Python 版本管理uv tool:全局工具管理(类似pipx)
下面逐一介绍。
# 创建名为 .venv 的虚拟环境(默认行为)
uv venv
# 指定路径
uv venv myenv
# 指定 Python 版本(需先安装该版本,见 3.3 节)
uv venv --python 3.11
| 工具 | 时间(macOS M1) |
|---|---|
| python -m venv .venv | ~800ms |
| uv venv | ~10ms |
优势:不复制标准库,而是通过符号链接(symlink)实现,启动速度极快。
与传统方式一致:
# Linux/macOS source .venv/bin/activate # Windows (PowerShell) ..venvScriptsActivate.ps1
uv pip 完全兼容 pip 的 CLI 参数和 requirements.txt。
# 安装单个包
uv pip install requests
# 从 requirements.txt 安装
uv pip install -r requirements.txt
# 安装开发依赖
uv pip install -e .
# 指定索引源(兼容 pip 选项)
uv pip install --index-url https://pypi.tuna.tsinghua.edu.cn/simple torch
# 仅下载不安装(用于离线部署)
uv pip download -r requirements.txt --dest ./wheels
# 冻结依赖(输出当前环境的精确版本)
uv pip freeze > requirements.lock
在一个包含 django, numpy, pandas, requests 的 requirements.txt 中:
pip install -r requirements.txt:42 秒uv pip install -r requirements.txt:1.8 秒
优势:并行下载、智能缓存、避免重复解析依赖树。
这是 uv 最令人兴奋的功能之一——内置 Python 版本管理!
# 列出可用版本
uv python list --all
# 安装指定版本(自动从 python.org 下载)
uv python install 3.11
uv python install 3.12.1
# 安装最新 patch 版本
uv python install 3.11 --latest
uv python list
# 输出示例:
# 3.11.9 /Users/you/.local/share/uv/python/3.11.9/bin/python3
# 3.12.1 /Users/you/.local/share/uv/python/3.12.1/bin/python3
# 全局默认
uv python pin 3.11
# 项目级(在当前目录生成 .python-version)
uv python pin 3.12.1 --project
优势:无需配置 shell 插件,开箱即用;自动处理 PATH;支持多平台预编译包。
用于安装命令行工具(如 black, ruff, poetry)到隔离环境中。
# 安装全局工具 uv tool install black uv tool install ruff # 运行工具(自动激活环境) black --version ruff check . # 列出已安装工具 uv tool list # 卸载 uv tool uninstall black
优势:比 pipx 更快,且与 uv 缓存共享,节省磁盘空间。
- Rust 实现:无 GIL 限制,充分利用多核。
- 并行下载与安装:同时处理多个包。
- 智能缓存:全局 wheel 缓存,避免重复编译。
- 符号链接虚拟环境:创建时间从秒级降至毫秒级。
- 完全支持
pip 的命令行参数。
- 读取
requirements.txt, pyproject.toml, setup.py。
- 生成的标准虚拟环境可被任何 IDE 识别。
pip 的命令行参数。requirements.txt, pyproject.toml, setup.py。
过去你需要:
pyenv → 管理 Python 版本
venv → 创建虚拟环境
pip → 安装包
pipx → 安装全局工具
现在只需一个 uv:
uv python install 3.11 # 版本管理 uv venv --python 3.11 # 虚拟环境 uv pip install -r reqs.txt # 包安装 uv tool install ruff # 全局工具
- 默认启用
--locked 模式(未来将强制),确保依赖解析结果一致。
- 支持
--dry-run 预览安装计划。
- 自动处理平台标签(如
manylinux, musllinux)。
--locked 模式(未来将强制),确保依赖解析结果一致。--dry-run 预览安装计划。manylinux, musllinux)。
假设你要开始一个 Flask 项目:
# 1. 安装所需 Python 版本
uv python install 3.11
# 2. 创建项目目录并进入
mkdir my-flask-app && cd my-flask-app
# 3. 设置项目级 Python 版本
uv python pin 3.11 --project
# 4. 创建虚拟环境
uv venv
# 5. 激活环境(Linux/macOS)
source .venv/bin/activate
# 6. 安装依赖
echo "flask" > requirements.txt
uv pip install -r requirements.txt
# 7. 安装开发工具
uv tool install black ruff
# 8. 编写代码并格式化
echo 'print("Hello uv!")' > app.py
black app.py
整个过程流畅、快速、无冗余步骤。
短期内不会。uv 定位是 pip 的高性能替代品,而非破坏性革新。它尊重现有生态,目标是成为“更好的 pip”。
支持!所有 pip 的索引相关参数(--index-url, --extra-index-url, --trusted-host)均有效。
强烈推荐! 例如在 GitHub Actions 中:
- name: Install uv run: curl -LsSf https://astral.sh/uv/install.sh | sh - name: Setup Python run: uv python install 3.11 - name: Create venv run: uv venv - name: Install deps run: uv pip install -r requirements.txt
可显著缩短 CI 时间。
完全支持!包括 PowerShell、CMD、WSL。虚拟环境路径、激活脚本均正确生成。
uv 仍在快速发展中(截至 2026 年初,版本约 0.5.x),未来计划包括:
uv build:替代python -m builduv publish:替代twine upload- 完整的 PEP 517/518 支持
- 与 Poetry、Hatch 等构建工具集成
Astral 团队的目标是:用一套工具统一 Python 的开发、构建、发布全流程。
uv 不仅仅是一个“更快的 pip”,它是对 Python 工具链的一次系统性重构。在 AI 和数据科学项目日益复杂的今天,开发效率的每一秒节省,都是对创造力的释放。
正如其名——uv(ultraviolet,紫外线),它看不见,却无处不在;它不改变生态,却让一切运行得更快、更稳、更简单。
现在就去试试吧:
curl -LsSf https://astral.sh/uv/install.sh | sh uv venv && uv pip install numpy pandas
你可能会惊讶于:原来 Python 开发,可以这么快。
到此这篇关于一文详解Python包管理工具uv的核心命令使用的文章就介绍到这了,更多相关Python uv命令内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!
您可能感兴趣的文章:
- Python包管理工具之uv的使用详细指南
- python uv常用命令使用及说明
- 使用uv安装多个Python版本的使用方法全攻略
- Python利用uv轻松管理venv虚拟环境和pip依赖包
- Python包管理工具uv下载python版本慢问题解决办法
- python之uv使用详解
- Python依赖包管理工具uv安装与使用详解