新一代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 项目开发、测试、部署
  • 需要快速、自动化的依赖和环境管理
  • 追求极致开发体验和环境隔离的开发者

参考资料

相关推荐
2601_962297254 分钟前
python自带缓存lru_cache用法及扩展的使用_python
python·缓存·装饰器·lru_cache·my_cache
招财小梗9 分钟前
沈阳AI企业咨询可定制数字化方案吗?
大数据·人工智能·python
磐链科技11 分钟前
区块链开发入门实战:用 Hardhat 与 Ethers.js 搭建你的第一个 DApp
开发语言·javascript·区块链
csdn2015_15 分钟前
java springboot项目,接收到的参数多个逗号
java·开发语言·spring boot
leihefeng24 分钟前
邮件文本分类:CountVectorizer / TF-IDF + 朴素贝叶斯
python·分类·数据挖掘·tf-idf·sklearn
码艺-Alimjan26 分钟前
维吾尔语数字转文本
java·javascript·python·算法·go
可乐鸡翅yeah_26 分钟前
hls.js 多实例并发踩坑,多视频页面播放器内存与冲突问题解决
开发语言·前端·javascript·音视频·hls·m3u8·m3u8在线播放
俊昭喜喜里27 分钟前
c#中的构造函数
开发语言·数据库·c#
hahaha601638 分钟前
HLS高层次综合设计--axi之burst纠偏
开发语言·算法·fpga开发·c#
天空属于哈夫克342 分钟前
企业微信 API 自动发送消息:从流程到实战
python·自动化·企业微信