uv使用指南

🚀 Python 打包工具 UV 使用指南

UV 是一个用 Rust 编写的极速 Python 包管理器和解析器,旨在成为 pip、pip-tools、virtualenv 等工具的单一替代方案。

📋 目录

  1. 核心概念与设计哲学
  2. 安装与配置
  3. 基础使用方法
  4. 项目管理与工作流
  5. 高级功能与技巧
  6. 与其他工具集成
  7. 性能优化与最佳实践
  8. 故障排除与调试
  9. 学习资源与进阶

🧠 核心概念与设计哲学

设计目标

  • 极速性能: 比传统工具快 10-100 倍
  • 一体化解决方案: 替代 pip、pip-tools、virtualenv、pipenv 等
  • 现代标准支持: 优先支持 pyproject.toml 和 PEP 标准
  • 可靠性: 基于 Rust 的内存安全性和强大的依赖解析器

核心组件

  • 包安装器: 替代 pip 的功能
  • 虚拟环境管理器: 替代 virtualenv 的功能
  • 依赖解析器: 基于 PubGrub 算法的高效解析
  • 项目初始化器: 创建新项目结构

🔧 安装与配置

多种安装方式

# Windows PowerShell (推荐)
powershell -ExecutionPolicy Bypass -c "irm https://astral.sh/uv/install.ps1 | iex"# Linux/macOS
curl -LsSf https://astral.sh/uv/install.sh | sh# 使用 pip (已安装Python的情况下)
pip install uv# 使用 pipx
pipx install uv# 使用 Homebrew (macOS)
brew install uv# 手动安装 (从发布页面下载)
# 访问: https://github.com/astral-sh/uv/releases

配置设置

# 查看所有配置选项
uv config list# 设置全局Python版本
uv config set default-python-version 3.11# 配置镜像源 (国内用户推荐)
uv config set index-url https://pypi.tuna.tsinghua.edu.cn/simple/# 或者通过环境变量
export UV_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple/

配置文件位置

  • 全局配置: ~/.config/uv/uv.toml (Linux/macOS) 或 %APPDATA%\uv\uv.toml (Windows)
  • 项目级配置: 项目目录中的 uv.toml

📖 基础使用方法

虚拟环境管理

# 创建虚拟环境
uv venv .venv# 创建指定Python版本的虚拟环境
uv venv --python 3.11 .venv# 激活虚拟环境 (Windows)
.\.venv\Scripts\activate# 激活虚拟环境 (Unix/macOS)
source .venv/bin/activate# 列出可用Python版本
uv python list# 安装特定Python版本
uv python install 3.11

包管理操作

# 安装单个包
uv pip install requests# 安装多个包
uv pip install requests pandas numpy# 安装指定版本的包
uv pip install "django==4.2.0"# 从requirements.txt安装
uv pip install -r requirements.txt# 列出已安装的包
uv pip list# 卸载包
uv pip uninstall package-name# 更新包
uv pip install --upgrade package-name# 查看包信息
uv pip show package-name

依赖管理

# 生成requirements.txt
uv pip freeze > requirements.txt# 安装开发依赖
uv pip install --dev black isort flake8# 根据pyproject.toml安装依赖
uv pip install -e .

🏗️ 项目管理与工作流

项目初始化与设置

# 创建新项目
uv init my-project
cd my-project# 添加生产依赖
uv add requests# 添加开发依赖
uv add --dev black# 安装所有依赖 (根据pyproject.toml)
uv sync# 安装生产依赖 only
uv sync --production# 更新依赖锁文件
uv sync --upgrade

依赖解析与锁文件

# 检查依赖更新
uv pip list --outdated# 更新所有依赖
uv pip install --upgrade --all# 生成精确的锁文件
uv sync --locked# 验证当前依赖与锁文件一致性
uv sync --check

项目结构示例

my-project/
├── pyproject.toml    # 项目配置和依赖声明
├── uv.lock           # 依赖锁文件 (自动生成)
├── src/
│   └── my_project/
│       ├── __init__.py
│       └── module.py
├── tests/
│   └── test_module.py
└── .venv/            # 虚拟环境 (可选)

🚀 高级功能与技巧

缓存与性能优化

# 清理缓存
uv cache clean# 查看缓存信息
uv cache info# 预下载包到缓存 (用于CI环境)
uv pip download --only-binary=:all: --dest ./cache-dir -r requirements.txt

平台特定依赖

# 在pyproject.toml中指定平台特定依赖
[project]
dependencies = ["requests","cffi; platform_machine == 'x86_64'",
]# 或者使用环境标记
[project.optional-dependencies]
windows = ["pywin32"]
linux = ["dbus-python"]

自定义索引源

# 添加额外包索引源
uv config set extra-index-urls '["https://pypi.company.com/simple"]'# 或使用TOML配置
[[index]]
url = "https://pypi.company.com/simple/"
name = "company"
priority = 1

二进制包控制

# 强制使用源码编译
uv pip install --no-binary :all: package-name# 强制使用预编译二进制包
uv pip install --only-binary :all: package-name# 指定特定包的二进制策略
uv pip install --only-binary=:numpy: --no-binary=:pandas: .

🔗 与其他工具集成

与PDM/Poetry项目兼容

# 安装PDM项目
uv pip install -e . --no-deps
uv sync --dev# 安装Poetry项目
uv pip install -e .
uv sync --dev --extras all

CI/CD集成示例

# GitHub Actions 示例
name: CIon: [push, pull_request]jobs:test:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v4- uses: astral-sh/setup-uv@v3with:python-version: "3.11"- run: uv sync --dev- run: uv run pytest

预发布环境配置

# 安装预发布版本
uv pip install --pre package-name# 允许安装alpha/beta版本
uv pip install --upgrade --pre package-name

⚡ 性能优化与最佳实践

最佳实践指南

  1. 利用缓存机制: UV 具有高效的缓存系统,避免重复下载
  2. 使用锁文件: 始终使用 uv.lock 确保环境一致性
  3. 合理配置镜像源: 国内用户配置国内镜像大幅提升速度
  4. 按需安装二进制包: 根据需要选择源码编译或预编译二进制包

性能对比技巧

# 对比UV和pip的性能
time uv pip install -r requirements.txt
time pip install -r requirements.txt# 清除缓存后测试
uv cache clean
pip cache purge

大型项目优化

# 分阶段安装依赖 (Dockerfile中特别有用)
# 第一阶段: 安装构建依赖
uv sync --dev --production# 第二阶段: 仅安装运行依赖
uv sync --production

🐛 故障排除与调试

常见问题解决

# 详细日志输出
uv pip install -v package-name# 更详细的调试信息
uv pip install -vv package-name# 显示依赖解析树
uv pip install --dry-run --report - > report.json# 检查环境问题
uv debug --verbose

依赖冲突解决

# 查看依赖冲突信息
uv pip check# 强制重新安装所有依赖
uv pip install --force-reinstall -r requirements.txt# 忽略已安装的包
uv pip install --ignore-installed package-name

网络问题处理

# 设置超时时间
uv pip install --timeout 60 package-name# 设置重试次数
uv pip install --retries 3 package-name# 使用代理
export UV_HTTP_PROXY=http://proxy.example.com:8080
export UV_HTTPS_PROXY=http://proxy.example.com:8080

📚 学习资源与进阶

官方资源

  • 官方文档
  • GitHub 仓库
  • Discord 社区

进阶主题

  1. 自定义解析策略: 学习如何配置依赖解析行为
  2. 插件开发: 了解如何为 UV 开发扩展功能
  3. 源码编译: 从源码编译 UV 以获得最新特性
  4. 集成测试: 在复杂项目中实施 UV 的测试策略

迁移指南

# 从 requirements.txt 迁移到 pyproject.toml
uv init
uv add -r requirements.txt# 从 Pipenv 迁移
uv pip install -r Pipfile --dev# 从 Poetry 迁移
uv pip install -r pyproject.toml --dev

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/921645.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/921645.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓学习 之 图片控件和图片按钮

今天学习的是ImageView 和 ImageButton这两个控件还是比较简单的:先来看看最后的样式图片吧:从图片中可以看到ImageView中的图片要大很多,这是因为中的ImageView中的图片跟ImageView控件的大小而自动调整。Imag…

动态规划-学习笔记

这是一份动态规划(Dynamic Programming, DP)完整学习笔记。笔记将从一星难度(入门)到五星难度(进阶),循序渐进,涵盖核心思想、经典模型和解题方法论。 本来打算今天更新背包问题的题…

Linux 可信启动深度解析:从UEFI到操作系统的信任链

文章目录引言一、 可信根基:TPM与核心概念1.1 什么是“度量” (Measurement)?1.2 信任链与TPM PCR二、 阶段一:固件的可信启动 (UEFI)2.1 引导的起点:从SEC到DXE的初始化2.2 引导设备选择 (BDS):UEFI如何找到GRUB2.3 S…

61-python中面向对象三大特性

前言: 面向对象编程,是许多编程语言都支持的一种编程思想。简单理解是:基于模板(类)去创建实体(对象), 使用对象完成功能开发。面向对象包含三大主要特性: 封装 继承 多态…

BP-Adaboost模型

BP-Adaboost模型是一种将BP神经网络作为弱分类器的集成学习框架,通过AdaBoost算法动态调整样本权重和模型权重,显著提升预测精度和泛化能力。一、模型架构与工作原理 1. 基础框架 弱分类器单元:采用单隐藏层BP神经网络(结构示例&a…

k230 +canMV+ LVGL控件 仿手表表盘触摸屏滚动、选中后弹窗效果完整示例程序

现在智能手表用的越来越多,其交互方式比较有特点,现在k230开发板上,基于LVGL(Light and Versatile Graphics Library)编写一个嵌入式GUI应用程序,使用LVGL配合触摸屏实现模仿智能手表的表盘滚动效果,实际效果如下: 程序使用LVGL图形库和MediaManager程序,创建带有触摸…

使用Vue.js和WebSocket打造实时库存仪表盘

大家好!今天我将分享一个简单却强大的实时库存仪表盘项目,基于Vue.js和WebSocket技术。这个项目适合初学者学习前端实时数据处理,也能为你的技术博客或作品集增添亮点!通过这个教程,你将学会如何使用WebSocket实现实时…

leecode100——接雨水

题目 双指针 思路1 使用参数存储从左往右(从右往左同理)遍历时的最高的柱子, 然后移动左右的指针,每次移动左右指针中偏向小的, 如果当前指针指的柱子小于最高的柱子,就会存在接到水。 思路2 把水看作柱子&…

复古胶片风格街拍人像Lr调色教程,手机滤镜PS+Lightroom预设下载!

调色教程复古胶片风格街拍人像 Lightroom 调色,通过模拟经典胶片相机的色彩科学,为现代数码照片注入怀旧韵味。这种调色手法注重低饱和度色彩、柔和的高光过渡和丰富的暗部细节,配合适度的颗粒感,营造出时光沉淀的质感。特别适合街…

Linux的gpio子系统

GPIO其实也是某个pin的功能之一。上一小节讲解了 pinctrl 子系统,pinctrl 子系统重点是设置 PIN(有的 SOC 叫做 PAD)的复用和电气属性,如果 pinctrl 子系统将一个 PIN 复用为 GPIO 的话,那么接下来就要用到 gpio 子系统了。gpio 子系统顾名思…

VC++ CPU指令集检测工具实现原理

📈 VC CPU指令集检测工具实现原理 例图:🧠 1. 核心原理:CPUID指令 // 使用CPUID指令获取CPU信息 int cpuInfo[4] { -1 }; __cpuid(cpuInfo, 0); // 调用CPUID指令 int nIds cpuInfo[0]; // 获取最大标准功能号CPUID指令工作流程…

大模型微调理论、实战:LLaMA-Factory、Unsloth

概述 微调,Fine-Tuning,简称FT,可理解为对LLM的定制,目的是增强专业领域知识,并优化特定任务的性能。通过在特定数据集上微调一个预训练模型,可实现: 更新知识:引入新的领域专属信…

【LCA 树上倍增】P9245 [蓝桥杯 2023 省 B] 景区导游|普及+

本文涉及知识点 树上倍增 P9245 [蓝桥杯 2023 省 B] 景区导游 题目描述 某景区一共有 NNN 个景点,编号 111 到 NNN。景点之间共有 N−1N-1N−1 条双向的摆渡车线路相连,形成一棵树状结构。在景点之间往返只能通过这些摆渡车进行,需要花费…

基于Python+Streamlit的旅游数据分析与预测系统:从数据可视化到机器学习预测的完整实现

🏞️ 基于PythonStreamlit的旅游数据分析与预测系统:从数据可视化到机器学习预测的完整实现 📝 前言 在大数据时代,旅游行业的数据分析变得越来越重要。如何从海量的旅游数据中挖掘有价值的信息,并进行准确的销量预测&…

飞算JavaAI全链路实战:智能构建高可用电商系统核心架构

飞算JavaAI全链路实战:智能构建高可用电商系统核心架构 前言:AI编程新时代的电商系统开发范式变革 在当今数字经济时代,电商系统作为企业数字化转型的核心载体,其复杂度和技术要求与日俱增。一个完整的电商系统不仅需要处理商品、…

论文精读(五):面向链接预测的知识图谱表示学习方法综述

笔者链接:扑克中的黑桃A 专栏链接:论文精读 本文关键词:知识图谱; 表示学习; 链接预测; 多元关系; 超关系 引 诸位技术同仁: 本系列将系统精读的方式,深入剖析计算机科学顶级期刊/会议论文,聚焦前沿突破…

Roo Code之自定义指令(Custom Instructions),规则(Rules)

在Roo Code 中,Custom Instructions 可以通过Instructions 设定和Rules 规则文件实现。什么是Custom Instructions? 自定义指令(Custom Instructions)定义了超出Roo基本角色定义范围的具体行为、偏好和约束。示例包括编码风格、文档标准、测试要求和工作…

9/8我是ai大师

一、变量定义部分(理解程序的 "记忆")c运行/* USER CODE BEGIN PV */ static uint8_t last_button_state 1; // 初始为高电平(未按下) static uint8_t device_mode 0; // 设备模式:0LD1, 1LD3, 2蜂鸣器, 3…

前沿重器[74] | 淘宝RecGPT:大模型推荐框架,打破信息茧房

前沿重器栏目主要给大家分享各种大厂、顶会的论文和分享,从中抽取关键精华的部分和大家分享,和大家一起把握前沿技术。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。(算起来,专项启动已经…

jenkins加docker 部署项目

jenkins加docker 部署springboot项目 1项目结构Dockerfile 内容 FROM openjdk:8-jdk-alpine ARG JAR_FILEtarget/*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar","--server.port9090"]在A服务器上启动jenkins …