吴志勇的博客 吴志勇的博客
  • h5

    • HTML5&CSS3
  • scss

    • css预处理语言
  • JavaScript

    • JavaScript教程
    • Ajax
    • ES6教程
    • NodeJS
    • Typescript
  • 框架

    • Jquery
    • VUE
    • React
  • Swing专题
  • java基础
  • javaweb
  • 框架
  • 数据库
  • netty
  • 设计模式
  • 微服务及架构
  • 云原生
  • maven
  • 单元测试
工具
我的
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

吴志勇

......
  • h5

    • HTML5&CSS3
  • scss

    • css预处理语言
  • JavaScript

    • JavaScript教程
    • Ajax
    • ES6教程
    • NodeJS
    • Typescript
  • 框架

    • Jquery
    • VUE
    • React
  • Swing专题
  • java基础
  • javaweb
  • 框架
  • 数据库
  • netty
  • 设计模式
  • 微服务及架构
  • 云原生
  • maven
  • 单元测试
工具
我的
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 运维

    • linux&shell
    • Docker教程
    • git
    • Jenkins教程
    • 正则表达式
    • 一键打包到linux环境
    • vmvare安装虚拟机集群
    • kubesphere部署nacos
    • Vmware安装centos7后网络配置
    • Certbot与Nginx配置SSL证书及自动续签指南
  • VSCode的使用
  • idea热部署
  • vscode+github图床
  • 旧笔记本安装pve+黑群晖
  • 使用阿里云容器镜像服务
  • nvm管理nodejs
  • ollma
  • 虚拟机挂载CentOS挂载本地目录
  • 老毛子Padavan安装应用
  • docker安装firecrawl并使用
  • Python使用UV指南
    • 目录
    • 简介
    • 主要特点
    • 安装方法
      • Windows
      • macOS/Linux
      • 通过pip安装
      • 通过pipx安装
    • 基本用法
      • 创建虚拟环境
      • 激活虚拟环境
      • 管理依赖
      • 运行脚本
    • 高级功能
      • Python版本管理
      • 依赖锁定
      • 工作区支持
      • 工具运行
    • 与其他工具比较
      • UV vs Pip
      • UV vs Poetry
      • UV vs Conda
    • 最佳实践
    • 常见问题
    • 参考资料
  • huggingface部署n8n
  • n8n使用飞书作为数据存储
  • frp内网穿透以及服务化
  • 工具
wuzhiyong
2025-05-26

Python使用UV指南

# Python UV 包管理工具指南

# 目录

  • 简介
  • 主要特点
  • 安装方法
  • 基本用法
    • 创建虚拟环境
    • 激活虚拟环境
    • 管理依赖
    • 运行脚本
  • 高级功能
    • Python版本管理
    • 依赖锁定
    • 工作区支持
    • 工具运行
  • 与其他工具比较
    • UV vs Pip
    • UV vs Poetry
    • UV vs Conda
  • 最佳实践
  • 常见问题
  • 参考资料

# 简介

UV是一个由Astral(Ruff的创建者)开发的极速Python包管理工具,使用Rust语言编写。它旨在成为一个统一的工具,可以替代pip、pip-tools、pipx、poetry、pyenv、virtualenv等多种Python工具,提供更快的性能和更好的用户体验。

UV的设计理念是简化Python项目的依赖管理,同时提供卓越的性能。在基准测试中,UV比传统工具快10-100倍,特别是在热缓存环境下,性能提升更为显著。

# 主要特点

  • 极速性能:比传统工具(如pip、poetry)快8-115倍
  • 统一工具链:替代多种Python工具(pip、pip-tools、pipx、poetry、pyenv、virtualenv等)
  • 高效的磁盘空间利用:通过全局缓存实现依赖项去重
  • 灵活安装:无需Rust或Python即可通过curl或pip安装
  • 跨平台支持:完全兼容macOS、Linux和Windows
  • 高级依赖管理:支持依赖版本覆盖、替代解析策略和冲突跟踪解析器
  • 清晰的错误消息:一流的错误处理确保开发人员能够高效解决冲突
  • 现代Python特性支持:支持可编辑安装、Git依赖、直接URL、本地依赖、约束文件等
  • 应用和脚本管理:安装和管理Python版本,运行带有内联依赖元数据的脚本
  • 通用锁文件:简化项目管理,提供一致且可移植的锁文件
  • 工作区支持:通过类似Cargo的工作区管理处理可扩展项目

# 安装方法

# Windows

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

推荐这种方式,pip方式的安装会污染环境。默认安装到C:\Users\Administrator\.local\bin,将其添加到环境变量。

# macOS/Linux

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

# 通过pip安装

pip install uv
1

# 通过pipx安装

pipx install uv
1

# 基本用法

# 创建虚拟环境

UV可以创建和管理Python虚拟环境,速度比传统工具快得多:

# 创建虚拟环境
uv venv env_name

# 使用特定Python版本创建虚拟环境
uv venv --python=3.12 env_name
1
2
3
4
5

# 激活虚拟环境

source env_name/bin/activate  # Linux/macOS
env_name\Scripts\activate     # Windows
1
2

# 管理依赖

UV提供了简单而强大的依赖管理功能:

# 初始化新项目
uv init my_project
cd my_project

# 添加依赖
uv add fastapi

# 添加开发依赖
uv add --group dev pytest ruff

# 运行项目
uv run python main.py
1
2
3
4
5
6
7
8
9
10
11
12

# 运行脚本

UV可以管理单文件脚本的依赖和环境:

# 创建脚本并添加内联元数据声明其依赖项
echo 'import requests; print(requests.get("https://astral.sh"))' > example.py

# 为脚本添加依赖
uv add --script example.py requests

# 在隔离的虚拟环境中运行脚本
uv run example.py
1
2
3
4
5
6
7
8

# 高级功能

# Python版本管理

UV可以安装和管理多个Python版本:

# 安装多个Python版本
uv python install 3.10 3.11 3.12

# 查看已安装的Python版本
uv python list

# 在当前目录中使用特定Python版本
uv python pin 3.11
1
2
3
4
5
6
7
8

# 依赖锁定

UV支持依赖锁定,确保环境的一致性:

# 创建锁文件
uv lock

# 根据锁文件同步环境
uv sync

# 升级特定包
uv lock --upgrade-package requests

# 升级所有包
uv lock --upgrade
1
2
3
4
5
6
7
8
9
10
11

# 工作区支持

UV支持类似Cargo的工作区,适用于可扩展项目:

# 在工作区中添加依赖
uv add --workspace fastapi
1
2

# 工具运行

UV可以执行和安装Python包提供的命令行工具,类似于pipx:

# 在临时环境中运行工具
uvx pycowsay 'hello world!'

# 安装工具
uv tool install ruff
1
2
3
4
5

# 与其他工具比较

# UV vs Pip

特性 UV Pip
速度 极快(8-115倍于pip) 较慢
依赖解析 高级冲突跟踪 基本解析
缓存策略 全局缓存,高效利用磁盘空间 基本缓存
虚拟环境 内置支持 需要venv或virtualenv
锁文件 原生支持 需要pip-tools
Python版本管理 内置支持 不支持

# UV vs Poetry

特性 UV Poetry
速度 极快(10倍于Poetry) 较快(但比UV慢)
实现语言 Rust Python
资源占用 轻量级 中等
依赖组 支持 支持
项目发布 支持 支持
工具链集成 更广泛(替代多种工具) 中等

# UV vs Conda

特性 UV Conda
速度 极快(30倍于Conda) 慢
非Python包 不支持 支持
环境隔离 项目级虚拟环境 全局环境管理
资源占用 轻量级 重量级
适用场景 纯Python项目 数据科学、混合语言项目

# 最佳实践

  1. 使用UV的pip接口进行迁移:如果你已经有使用pip的项目,可以通过UV的pip接口(uv pip)无缝迁移,享受性能提升。

  2. 利用依赖组:使用依赖组(如dev、test、prod)来组织不同环境的依赖。

  3. 结合使用锁文件:始终使用锁文件(uv.lock)确保环境的一致性和可重现性。

  4. 脚本内联依赖:对于单文件脚本,使用内联依赖元数据简化依赖管理。

  5. CI/CD优化:在CI/CD环境中,使用UV可以显著提高构建速度。

# 常见问题

问题:UV与现有的pip requirements.txt文件兼容吗?
回答:是的,UV完全兼容现有的pip requirements.txt文件,可以使用uv pip install -r requirements.txt直接导入它们。

问题:如何从Poetry迁移到UV?
回答:UV可以直接使用Poetry的pyproject.toml文件,使迁移过程非常简单。你可以继续使用现有的项目结构,只需开始使用UV命令。

问题:UV是否支持私有PyPI仓库?
回答:是的,UV支持自定义索引和私有PyPI仓库,与pip的行为类似。

问题:UV是否支持editable安装?
回答:是的,UV支持可编辑安装(editable installs),适用于开发中的包。

# 参考资料

  • UV官方文档 (opens new window)
  • UV GitHub仓库 (opens new window)
  • Astral博客:UV介绍 (opens new window)
  • Python包管理工具比较 (opens new window)
  • UV深度指南 (opens new window)
上次更新: 2025-05-27 03:42:22

← docker安装firecrawl并使用 huggingface部署n8n→

Copyright © 2020-2025 wuzhiyong
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式