UV 项目管理指南

UV 操作指南

文章目录

  • UV 操作指南
    • 🌎 一. UV 介绍
    • 🎀 二. 安装 UV
    • 📙 三. 操作指南
      • 🎯 3.1 命令预览
      • 🐍 3.2 Py版本管理
      • 🚀 3.3 **项目管理**
      • 🎩 3.4 虚拟环境
      • 📦 3.5 依赖管理
      • 🛠️ 3.6 构建与发布
      • 🧰 3.7 辅助工具
    • 🎓 四. 项目实战
    • 🏆 五. 最佳实践
    • 📚 附1:镜像加速

🌎 一. UV 介绍

UV是一个用 Rust 编写的、速度极快的 Python 包和项目管理器。

核心优势:

  • ⚡️ 速度提升:依赖安装比pip快 10-100 倍(基于 Rust 并行处理)
  • 📦 全流程管理:支持项目初始化、依赖管理、虚拟环境、打包发布等完整生命周期
  • 🔄 环境隔离:自动管理虚拟环境,区分dev/prod依赖
  • 💾 全局缓存:依赖去重存储,节省磁盘空间
  • 🐍 多版本支持:内置 Python 版本管理,可安装/切换不同 Python 解释器
  • 🖥️ 跨平台兼容:支持 macOS/Linux/Windows,无额外依赖

🎀 二. 安装 UV

1. Linux/macOS

curl-LsSf https://astral.sh/uv/install.sh|shexportPATH=$PATH:$HOME/.local/bin

2. Windows

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

3. 验证安装

uv --version# 输出格式:uv x.y.z (如 uv 0.1.30)

更多内容,可查看 官方安装文档 。


📙 三. 操作指南

🎯 3.1 命令预览

$ uv --help 一个极速的 Python 包管理器。 用法: uv [OPTIONS] <COMMAND> 命令: auth 管理身份认证 run 运行命令或脚本 init 创建新项目 add 添加依赖到项目 remove 从项目移除依赖 version 读取或更新项目版本 sync 更新项目环境 lock 更新项目的锁文件 export 将项目的锁文件导出为其他格式 tree 展示项目的依赖树 format 格式化项目中的 Python 代码 tool 运行和安装 Python 包提供的工具命令 python 管理 Python 版本和安装 pip 通过 pip 兼容接口管理 Python 包 venv 创建虚拟环境 build 将 Python 包构建为源码发行版和 wheel publish 将发行版上传到索引 cache 管理 uv 的缓存 self 管理 uv 可执行文件 help 显示命令文档

Tip:所有子命令均支持--help查看详细用法,如uv add --help

🐍 3.2 Py版本管理

# 查看已安装/可安装列表$ uv python list# 安装Python$ uv pythoninstall3.12# 卸载Python$ uv python uninstall3.11# 设置项目默认版本$ uv python pin3.14Updated`.python-version`from`3.12`->`3.14`

🚀 3.3项目管理

# 1️⃣ 创建项目(自动生成 pyproject.toml、README、src 目录等)$ uv init hello_uv# 默认使用系统默认 python$ uv init -p3.12hello_uv# 指定 Python 版本# 2️⃣ 进入项目目录$cdmy_project# 3️⃣ 添加依赖(自动写入 pyproject.toml + 更新 lock)$ uvaddrequests# 运行时依赖$ uvaddruff --dev# 开发依赖(仅 prod 环境不装)# 4️⃣ 同步环境(等同于 pip install -r uv.lock)$ uvsync# 安装全部依赖(包括 dev)$ uvsync--no-dev# 只装运行时依赖(prod 场景)# 5️⃣ 项目验证$ uv version# 项目版本$ uv run python -c"import sys; print(sys.prefix)"# 查看虚拟环境# 6️⃣ 运行代码(自动创建并激活虚拟环境)$ uv run main.py $ uv run main.py --only-dev

🎩 3.4 虚拟环境

# 创建隔离的虚拟环境(替代python -m venv)$ uv venv .venv# 指定Python版本$ uv venv --python3.12.venv# 在虚拟环境中安装种子包$ uv venv .venv --seed

小技巧:激活虚拟环境后,uv会自动使用该环境的解释器,无需手动切换。

📦 3.5 依赖管理

核心命令功能典型场景
add添加依赖到项目uv add pandas
remove从项目移除依赖uv remove requests
sync同步安装所有依赖(极速替代pip installuv sync
lock生成/更新锁文件(uv.lockuv lock
tree可视化依赖关系uv tree --all
pip兼容 pip 命令的接口uv pip list

基础操作

# 添加生产依赖(写入 pyproject.toml 的 [project.dependencies])$ uvaddrequests# 自动选择最新兼容版本$ uvadd"requests>=2.31.0"# 指定版本约束# 添加开发依赖(写入 [project.optional-dependencies.dev])$ uvaddpytest --dev# 仅开发环境使用(测试、格式化等工具)$ uvadd"ruff>=0.1.0"--dev# 代码检查工具# 移除依赖(自动清理关联依赖)$ uv remove requests# 生产依赖$ uv remove pytest --dev# 开发依赖(必须加 --dev)

依赖同步

# 根据pyproject.toml和uv.lock安装所有依赖$ uvsync# 首次或变更后执行$ uvsync--check# 仅检查冲突不安装# 仅更新锁文件(不安装,用于CI环境预生成锁文件)$ uv lock# 导出依赖清单(兼容传统 requirements.txt )$ uvexport>requirements.txt# 生产环境依赖$ uvexport--dev>requirements-dev.txt# 含开发依赖

依赖可视化

$ uv tree# 查看依赖树(含子依赖版本)$ uv tree --no-dev# 查看生产依赖关系$ uv tree --only-dev# 查看开发依赖关系$ uv tree --package requests# 查看单个包依赖关系

pip包管理

完全可以把uv当作pip加速工具,常用命令如下:

$ uv pip --help Manage Python packages with a pip-compatible interface Usage: uv.exe pip[OPTIONS]<COMMAND>Commands: compile 将"requirements.in"文件编译为"requirements.txt""pylock.toml"文件sync将环境与"requirements.txt""pylock.toml"文件同步install将包安装到环境中 uninstall 从环境中卸载包 freeze 以依赖清单格式列出环境中已安装的包 list 以表格格式列出环境中已安装的包 show 显示一个或多个已安装包的信息 tree 显示环境的依赖树 check 验证已安装包是否具有兼容的依
# 查看包$ uv pip list $ uv pip tree# 安装包$ uv pipinstallrequests $ uv pipinstallrequests==2.31.0# 导出依赖包$ uv pip freeze>requirements.txt# 导入依赖包$ uv pipinstall-r requirements.txt# 卸载包$ uv pip uninstall requests

🛠️ 3.6 构建与发布

# 构建分发包(生成sdist和wheel包)$ uv build --release# 将构建好的包上传到 PyPI 等索引(需提前配置 .pypirc)$ uv publish --repository pypi

🧰 3.7 辅助工具

命令用途示例
uv auth login登录到 PyPI、GitHub 等仓库uv auth login --registry pypi
uv cache clean清理 uv 缓存(下载的包、构建产物)uv cache clean
uv format使用内置的ruff/black进行自动格式化uv format .
uv tool <Name>运行第三方工具(如uv tool mypyuv tool install ruff
export转换锁文件格式(如导出为 requirements.txt )
# 工具是脱离工程环境独立运行的$ uv toolinstallruff# 代码检查linter$ uv toolinstallblack# 代码formatter$ uv tool list# 查看工具列表$ uv tool uninstall ruff#卸载ruff工具

工具是脱离工程环境独立运行的。


🎓 四. 项目实战

1. 项目初始化

$ uv init fastapi-demo $cdfastapi-demo

2. 添加依赖

$ uvaddfastapi $ uvadduvicorn[standard]

3. 编写代码

# main.pyfromfastapiimportFastAPI app=FastAPI()@app.get("/")defread_root():return{"msg":"Hello, uv & FastAPI"}

4. 运行项目

# 开发模式(自动重载)uv run -- uvicorn main:app --reload# 生产模式uv run -- uvicorn main:app --host0.0.0.0 --port8000

5. 项目结构

fastapi-demo/ ├── pyproject.toml # 项目配置和依赖 ├── uv.lock # 依赖锁定文件 ├── .venv/ # 虚拟环境(自动创建) ├── main.py # 主程序文件 └── README.md

🏆 五. 最佳实践

  1. 版本控制:将pyproject.tomluv.lock纳入版本控制
  2. 环境隔离:每个项目使用独立的虚拟环境
  3. 依赖锁定:定期运行uv lock更新锁定文件
  4. CI/CD 集成:使用uv sync确保环境一致性
  5. 多环境管理:为开发、测试、生产环境分别配置依赖

📚 附1:镜像加速

名称URL适用场景
清华源https://pypi.tuna.tsinghua.edu.cn/simple学术/开发环境,更新快
阿里云https://mirrors.aliyun.com/pypi/simple/企业/生产环境,稳定
中科大https://pypi.mirrors.ustc.edu.cn/simple科学计算相关包
  • 通过文件配置(uvpip
# uv 的配置文件(如 uv.toml) [tool.uv.sources] name = "tuna" type = "index" url = "https://pypi.tuna.tsinghua.edu.cn/simple"
  • 或通过环境变量临时指定:
exportPIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple

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

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

相关文章

为什么程序员怕35岁,但网安却越老越吃香?

同样是技术岗&#xff0c;为啥程序员怕35岁危机&#xff0c;网安却越老越值钱&#xff1f; 你有没有发现&#xff0c;身边做程序员的朋友&#xff0c;一到 30 岁就开始焦虑 “35 岁后怎么办”&#xff0c;但做网安的前辈&#xff0c;反而越往后越吃香&#xff0c;薪资和话语权…

输入AI绘画的用户评价,自动分类统计(满意,一般,不满意),输出评价分析报告和改进建议。

这是将数据科学、人工智能与商业决策结合起来。下面我将为您提供一个完整的、基于Python的“AI绘画用户评价分析”程序。项目概览&#xff1a;ArtCriticScope - AI绘画用户评价分析器核心功能&#xff1a;用户提供一个包含AI绘画作品用户评价的CSV或文本文件&#xff0c;程序会…

【人工智能引论期末复习】 第6章 深度学习4 - RNN

一、基本概念与填空考点RNN全称&#xff1a;循环神经网络&#xff08;Recurrent Neural Network&#xff09;RNN的主要特点&#xff1a;具有记忆能力&#xff0c;能处理序列数据前后输入之间存在依赖关系与CNN和前馈网络的区别&#xff1a;CNN&#xff1a;局部感知、参数共享&a…

别再说“零基础学不了网安”!电脑小白也能入门的4阶段路线

别再说 “零基础学不了网安”&#xff01;电脑小白也能入门的 4 阶段路线. 总有人问&#xff1a;“我连代码都不会写&#xff0c;能学网络安全吗&#xff1f;” 其实真不用怕&#xff0c;哪怕你是只会用电脑刷视频的纯小白&#xff0c;跟着清晰的路线一步步学&#xff0c;照样…

电鱼智能 AM3354 驱动巡检履带机器人的高可靠运动底盘控制

什么是 电鱼智能 AM3354&#xff1f;电鱼智能 AM3354 是一款经典的工业级核心板&#xff0c;搭载 TI Sitara AM335x 处理器。它最大的杀手锏不是 CPU 主频&#xff0c;而是内置了 2 个 PRU-ICSS&#xff08;可编程实时单元&#xff09;。这两个 200MHz 的 RISC 核心独立于主 CP…

深度学习毕设选题推荐:基于python卷积神经网络识别花卉基于卷积神经网络识别花卉

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

接入京东关键词API的核心利弊分析

接入京东关键词API的核心价值在于通过官方合规的数据能力&#xff0c;驱动电商运营的精细化与自动化&#xff0c;但同时也存在接入门槛、成本投入及合规约束等潜在问题。以下从“利”“弊”两大维度展开详细分析&#xff0c;并给出平衡策略&#xff0c;为业务决策提供参考。一、…

苹果向谷歌借脑:Siri终于要变聪明了,但谁才是真正赢家?

作者&#xff1a;周雅 今天AI圈的一个大事件&#xff0c;是那个我们苦等两年、传说中要脱胎换骨的Siri大更新&#xff0c;传言中“更智能的Siri”最早在2024年WWDC上被预告&#xff0c;原定2025年春季上线&#xff0c;后来一推再推&#xff0c;甚至有报道称要等到2027年。 而今…

Python代码+提示词访问大模型

#!/usr/bin/env python # coding: utf-8# 导入依赖库 from cmd import PROMPT from urllib import response import dashscope import os# 从环境变量中获取 API Key dashscope.api_key os.getenv(DASHSCOPE_API_KEY)# 基于 prompt 生成文本 # 使用 deepseek-v3 模型 def get_…

机器人主控去 X86 化:电鱼智能 RK3588 提供 8 核高算力平替方案

什么是 电鱼智能 RK3588&#xff1f;电鱼智能 RK3588 是目前国产 ARM 生态中的“性能怪兽”。它搭载 4 核 Cortex-A76 4 核 Cortex-A53 处理器&#xff0c;主频高达 2.4GHz。除了通用算力&#xff0c;它最核心的优势在于异构计算&#xff1a;集成了 6TOPS NPU&#xff08;AI 加…

Java多态详解,零基础入门到精通,收藏这篇就够了

目录 1、概述 2、多态的定义与使用格式 3、多态的特点 4、多态成员的特点 5、instanceof 关键字 6、多态转型 7、多态的优缺点 1、概述 多态就是描述一个事物的多种形态&#xff0c;如小明是一个学生&#xff0c;他既是人&#xff0c;也是学生&#xff0c;出现两种形态…

现代农业赋能下的农产品高质量发展

民以食为天&#xff0c;农业是安天下、稳民心的战略产业&#xff0c;而农产品作为农业生产的核心成果&#xff0c;不仅承载着保障粮食安全的基础使命&#xff0c;更在乡村振兴的浪潮中成为激活产业活力、带动农民增收的关键抓手。如今&#xff0c;我国农业正告别“看天吃饭”的…

Go 里的端口复用从原理到生产可用代码(SO_REUSEPORT / SO_REUSEADDR)

1. 先把概念掰直&#xff1a;你说的“端口复用”可能是四种事 1&#xff09;多进程共享同一端口&#xff08;真正意义上的端口复用&#xff09; 多个进程同时 listen :8080&#xff0c;由内核把新连接分发到不同进程。 关键开关&#xff1a;SO_REUSEPORT&#xff08;Linux 3.9 …

Rust 交叉编译:MacOS ====> Linux (musl 静态编译)

核心说明 你要实现的是 macOS (x86_64/arm64) → Linux CentOS (x86_64) 的 Rust 交叉编译&#xff0c;且指定 musl 静态编译&#xff0c;使用 cargo-zigbuild 是最优方案&#xff0c;没有之一。 优势1&#xff1a;cargo-zigbuild 基于 zig 编译器的交叉编译能力&#xff0c;无…

JAVA常用源码编辑工具有哪些?_java编辑器,零基础入门到精通,收藏这篇就够了

ava 源代码本质上其实就是普通的文本文件&#xff0c;所以理论上来说任何可以编辑文本文件的编辑器都可以作为我们的 Java 代码编辑工具。比如&#xff1a;Windows 记事本&#xff0c;Mac OS X 下的文本编辑&#xff0c;Linux 下的 vi、emacs、gedit、DOS 下的 edit 等。但是这…

使用Ubuntu搭建Java部署环境_ubuntu安装java环境,零基础入门到精通,收藏这篇就够了

在Ubuntu下搭建Java部署环境需要使用到apt命令 apt命令(用于安装、更新、删除、查询软件包) 语法: apt [命令] [软件包名称]接下来我们来搭建Java部署环境 使用apt安装JDK 更新软件包列表 我们先更新软件包列表 apt-get updateUbuntu仓库的软件不一定和软件包官网的版本一样, …

人工造问卷 VS 宏智树 AI:告别 “无效调研”,学术问卷设计原来可以这么简单

作为深耕论文写作科普的教育博主&#xff0c;后台总能收到这样的求助&#xff1a;“花 3 天设计的问卷&#xff0c;导师说信效度为零”“发出去 200 份问卷&#xff0c;150 份数据无效”“量表题项照搬&#xff0c;结果被批缺乏学术逻辑”。实证类论文的核心是数据&#xff0c;…

永磁同步电机反步控制实战手记

永磁同步电机反步(backstepping)控制 1.采用非线性控制策略反步控制法&#xff0c;实现永磁同步电机系统的完全解耦&#xff0c;相比PI控制减少了系统调节参数&#xff0c;抗负载扰动能力明显提高&#xff1b; 2.提供算法对应的参考文献和仿真模型 购买赠送PMSM控制相关电子资料…

JAVA实战:学生选课管理系统_java学生选课管理系统,零基础入门到精通,收藏这篇就够了

一.学生选课管理系统简介 首先定义了两个类&#xff1a;Student和Course。Student类表示学生&#xff0c;包含学生的姓名、学号和已选修的课程列表。Course类表示课程&#xff0c;包含课程的编号、名称和选修该课程的学生列表。 在Student类中&#xff0c;定义了构造方法用于…

【毕业设计】基于深度学习卷积神经网络训练识别橘子是否新鲜基于python_CNN深度学习卷积神经网络训练识别橘子是否新鲜

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…