新一代python管理工具--uv

uv 工具全方位介绍

起源与背景

uv 是由 Astral(pipx 作者)团队用 Rust 语言开发的新一代 Python 包和环境管理工具。其目标是解决传统 pip/venv/conda 在依赖解析慢、环境隔离繁琐、命令复杂等方面的痛点,为现代 Python 项目提供极速、自动化、一体化的依赖和环境管理体验。


主要特点

  • 极致性能 :uv 采用 Rust 实现,依赖解析和包安装速度比 pip 快 10-100 倍(详见官方基准测试)。
    • 为什么快?Rust 实现的高效算法、并发下载、优化的依赖解析流程,使 uv 能极大提升解析和安装效率。
  • 一站式工具集成:uv 可替代 pip、pip-tools、pipx、poetry、pyenv、twine、virtualenv 等,统一管理依赖、环境、脚本、Python 版本和工具。
  • 全局缓存与依赖去重:通过全局缓存和依赖去重机制,显著节省磁盘空间,多项目共享依赖无需重复安装。
  • 自动环境与项目管理 :每个项目自动创建 .venv,支持 universal lockfile,支持大型项目工作区(workspaces)。
  • 支持 Python 版本管理:可安装和切换多版本 Python。
  • 脚本运行与工具管理:支持带内依赖元数据的脚本运行,支持直接安装和运行 Python 工具包。
  • pip 兼容命令行:完全兼容 pip 常用命令,迁移无门槛。
  • 跨平台,安装便捷:支持 macOS、Linux、Windows,无需预装 Rust/Python,可用 curl、pip、pipx 安装。

安装方法

macOS 和 Linux

sh 复制代码
curl -LsSf https://astral.sh/uv/install.sh | sh

Windows

powershell 复制代码
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

通过 pip 安装(需已安装 Python)

sh 复制代码
pip install uv

通过 pipx 安装

sh 复制代码
pipx install uv

更多安装方式和细节请参考 uv 官方安装文档


常见用法

1. 安装依赖

sh 复制代码
uv pip install requests
uv pip install -r requirements.txt

2. 运行 Python 脚本

sh 复制代码
uv run main.py
uv run --python "C:/path/to/python.exe" main.py

3. 查看/管理依赖

sh 复制代码
uv pip list
uv pip freeze > requirements.txt
uv pip uninstall numpy

4. 自动创建虚拟环境

  • 只需在项目目录下运行任何 uv 命令,uv 会自动检测并创建 .venv 环境。
    如果要制定python 版本, 可以在工程根目录下放一个.python-version文件, 或者通过命令行指定python 版本。 否则uv会自动选择一个版本下载。

5. 解析 pyproject.toml

  • uv 会自动识别并安装 pyproject.tomlrequirements.txtsetup.py 中声明的依赖。

常用命令速查表

命令 说明
uv pip install 包名 安装依赖包
uv pip uninstall 包名 卸载依赖包
uv pip list 查看已安装包
uv pip freeze 导出依赖列表
uv run xxx.py 在隔离环境中运行脚本
uv run --python 路径 xxx.py 用指定 Python 运行脚本
uv pip install -r requirements.txt 按依赖文件安装所有依赖

uv 相比 pip 的主要优势

对比项 pip(传统工具) uv(新一代工具)
依赖解析与安装速度 较慢,解析和安装大项目依赖时耗时明显 极快,Rust 实现,依赖解析和包安装速度大幅领先
虚拟环境管理 需手动用 venv/virtualenv 创建与激活 自动为每个项目创建和管理 .venv,无需手动激活
自动识别依赖文件 仅支持 requirements.txt,pyproject.toml 支持有限 自动识别 pyproject.toml、requirements.txt、setup.py 等多种格式
一键运行脚本 需手动激活环境再运行脚本 uv run xxx.py 自动在隔离环境中运行脚本
命令兼容性 pip 命令标准 兼容 pip 子命令,且功能更丰富
安装体验 依赖冲突、环境不一致可能导致出错 自动隔离、自动同步依赖,极大减少环境冲突
包缓存 支持缓存,但多环境间仍需重复安装 高效缓存,自动重用已下载包,提升多项目间安装速度
跨平台支持 良好 同样良好

总结

  • uv 在依赖解析速度、自动环境管理、依赖文件识别和一键运行脚本等方面全面领先 pip。
  • uv 适合追求开发效率、环境隔离和现代项目自动化管理的用户。
  • pip 仍是最广泛兼容的传统工具,适合简单项目或对兼容性有极高要求的场景。

适用场景

  • 现代 Python 项目开发、测试、部署
  • 需要快速、自动化的依赖和环境管理
  • 追求极致开发体验和环境隔离的开发者

参考资料

相关推荐
为了更好的明天而战18 分钟前
Java 中的 ArrayList 和 LinkedList 区别详解(源码级理解)
java·开发语言
烛阴32 分钟前
一文搞懂 Python 闭包:让你的代码瞬间“高级”起来!
前端·python
JosieBook42 分钟前
【Java编程动手学】Java中的数组与集合
java·开发语言·python
qq_589568101 小时前
element-plus按需自动导入的配置 以及icon图标不显示的问题解决
开发语言·javascript·ecmascript
lsx2024061 小时前
SQLite Select 语句详解
开发语言
Dovis(誓平步青云)1 小时前
基于探索C++特殊容器类型:容器适配器+底层实现原理
开发语言·c++·queue·适配器·stack
R-sz1 小时前
java流式计算 获取全量树形数据,非懒加载树,递归找儿
java·开发语言·windows
随意0232 小时前
Qt 事件
开发语言·qt
Gyoku Mint2 小时前
深度学习×第4卷:Pytorch实战——她第一次用张量去拟合你的轨迹
人工智能·pytorch·python·深度学习·神经网络·算法·聚类
鸥梨菌Honevid2 小时前
Qt自定义控件(1)——QPaintEvent
开发语言·qt