当前位置: 首页 > ds >正文

新一代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

curl -LsSf https://astral.sh/uv/install.sh | sh

Windows

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

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

pip install uv

通过 pipx 安装

pipx install uv

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


常见用法

1. 安装依赖

uv pip install requests
uv pip install -r requirements.txt

2. 运行 Python 脚本

uv run main.py
uv run --python "C:/path/to/python.exe" main.py

3. 查看/管理依赖

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

参考资料

  • uv 官方文档
  • PEP 582(相关的本地包管理提案)
http://www.xdnf.cn/news/14088.html

相关文章:

  • Rust 学习笔记1
  • 数字孪生系统汽车工厂生产异常监控的智能利器
  • 快速解决软件测试的逻辑方法运用
  • 数字孪生之KTV洗脚城白皮书:娱乐产业的虚实融合革命
  • LX-YST-1
  • Qt背景平铺
  • Java-45 深入浅出 Tomcat 核心架构与处理流程全解析Coyote IO模型与协议
  • java集合(十) ---- LinkedList 类
  • 基于CT图像的硬参数共享多任务分析:肝脏肿瘤分割与良恶性分类
  • ELK 日志分析系统
  • transformer demo
  • 深入剖析Redis Cluster集群,Redis持久化机制,Redis数据类型及其数据结构
  • DeepSeek与呼叫中心系统结合提升效率
  • ELK日志文件分析系统——1
  • 美化显示MSVC调试的数据结构
  • 当雷达学会“读心术” 汽车舱内安全迈入新纪元
  • C盘瘦身?
  • 如何将视频从 iPhone 传输到 HP 笔记本电脑
  • Untiy打包安卓踩坑
  • 单点登录(SSO)技术原理与实现指南
  • 【Docker基础】Docker核心概念:命名空间(Namespace)详解
  • C++11 Generalized(non-trivial) Unions:从入门到精通
  • LINUX613计划测put
  • Hadoop 003 — JAVA操作MapReduce入门案例
  • 传统数据仓库正在被 Agentic AI 吞噬?Agentic Data Stack 初探
  • 代码训练LeetCode(33)字符串首次匹配
  • 基于Cesium的Shadertoy纹理材质应用
  • 如何从 Windows 11 或 10 远程访问 Ubuntu 24.04 或 22.04 桌面
  • Java过滤器的基本概念
  • 微软Copilot两大创新功能详解:SharePoint Agents vs. Copilot Notebooks