uv:现代化的 Python 包和项目管理工具

article/2025/6/9 22:31:27

文章目录

    • 什么是 uv?
    • 安装 uv
      • 使用安装脚本(适用于 macOS 和 Linux)
      • 使用 Homebrew(适用于 macOS)
      • 使用 PowerShell(适用于 Windows)
      • 使用 pip 安装
    • 创建虚拟环境
    • 激活和退出虚拟环境
    • 管理依赖
      • 添加依赖
      • 移除依赖
      • 同步依赖
      • 升级依赖
    • 运行脚本
    • 管理 Python 版本
      • 安装特定版本的 Python
      • 查看已安装的 Python 版本
    • 示例:快速创建并运行一个项目


在这里插入图片描述

在 Python 项目开发中,虚拟环境和依赖管理一直是开发者关注的重点。传统工具如 pipvirtualenvconda 虽然功能强大,但在速度、依赖冲突处理和多工具协作方面存在一定的局限性。为了解决这些问题,Astral 团队开发了一个全新的工具 —— uv。本文将介绍 uv 的基本操作,帮助你快速上手这一现代化的 Python 包和项目管理工具。


什么是 uv?

uv 是一个用 Rust 编写的高性能 Python 包和项目管理器,旨在替代传统的 pipvirtualenvpip-toolspoetry 等工具。它的主要特点包括:

  • 极致性能:依赖解析和安装速度比传统工具快 10–100 倍 。
  • 内置虚拟环境管理:自动创建和管理虚拟环境,无需手动操作。
  • 多 Python 版本支持:可安装和管理多个 Python 版本。
  • 统一的依赖管理:通过 pyproject.tomluv.lock 文件实现可重复的环境配置。
  • 兼容现有工具链:提供 uv pip 等命令,兼容现有的 pip 工作流程。

安装 uv

可以通过多种方式安装 uv:

使用安装脚本(适用于 macOS 和 Linux)

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

使用 Homebrew(适用于 macOS)

brew install uv

使用 PowerShell(适用于 Windows)

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

使用 pip 安装

pip install uv

安装完成后,可以通过以下命令验证安装:

uv --version

创建虚拟环境

uv 默认使用 .venv 目录作为虚拟环境的存储位置。你可以使用以下命令创建虚拟环境:

uv venv

如果需要指定虚拟环境的名称或路径,可以:

uv venv my_env

要使用特定版本的 Python 创建虚拟环境:

uv venv --python 3.11

如果指定的 Python 版本未安装,uv 会自动下载所需版本 。


激活和退出虚拟环境

激活虚拟环境:

  • macOS 和 Linux
  source .venv/bin/activate
  • Windows(PowerShell)
  .venv\Scripts\Activate.ps1

退出虚拟环境:

deactivate

管理依赖

uv 提供了一套简洁的命令来管理项目依赖:

添加依赖

uv add requests

此命令会将 requests 添加到 pyproject.toml 文件中,并更新 uv.lock 文件,同时安装该依赖。

移除依赖

uv remove requests

此命令会从 pyproject.tomluv.lock 中移除 requests,并卸载该依赖。

同步依赖

uv sync

根据 pyproject.tomluv.lock 文件,安装或更新项目所需的所有依赖。

升级依赖

升级单个依赖:

uv sync --upgrade-package requests

升级所有依赖:

uv lock --upgrade

运行脚本

uv 提供了 uv run 命令,用于在虚拟环境中运行脚本或命令:

uv run python main.py

此命令会自动激活虚拟环境,确保依赖已安装,然后运行 main.py


管理 Python 版本

uv 支持安装和管理多个 Python 版本:

安装特定版本的 Python

uv python install 3.12

查看已安装的 Python 版本

uv python list

uv 使用 Astral 的 python-build-standalone 项目提供的 Python 分发版本,确保兼容性和可重复性 。


示例:快速创建并运行一个项目

以下是使用 uv 创建并运行一个简单项目的示例流程:

# 初始化项目
uv init my_project
cd my_project# 添加依赖
uv add fastapi uvicorn# 运行应用
uv run uvicorn main:app --reload

在这个过程中,uv 会自动创建虚拟环境,安装依赖,并运行应用。


如需更深入的了解 uv 的使用,可以参考以下视频教程:

Python Tutorial: UV - A Faster, All-in-One Package Manager to Replace Pip and Venv


http://www.hkcw.cn/article/QfYCZDVYNV.shtml

相关文章

谭松韵疑似ABB式名字大户 独特角色宇宙引热议

在娱乐圈这个充满惊喜与意外的舞台上,谭松韵凭借独特的魅力和扎实的演技赢得了众多观众的喜爱。最近,她因为一个特别的“属性”引发了网友们的热烈讨论,被戏称为“ABB式名字大户”。在谭松韵生日直播的提问环节中,粉丝们发现她饰演过的许多角色都是ABB式姓名。从《蜀锦人家…

打字练习:平台推荐

1.打字练习 . 1)平台推荐 下面推荐两个打字练习平台 Keybr:https://www.keybr.com/ TypingClub:https://www.edclub.com/sportal/ . 2)平台对比 特性KeybrTypingClub核心优势AI智能弱项训练结构化课程体系适合人群开发者/…

UTC与本地时区的区别:为什么SQLMesh要求时间列使用UTC?

1. 什么是UTC?什么是时区? (1)UTC(协调世界时) 定义:UTC(Coordinated Universal Time)是全球标准时间基准,基于原子钟(TAI)和地球自…

[Windows] Dism++_Mod系统清理优化利器v10.1.1002.1B绿色魔改版

感谢 原作者和魔改版作者 Windows清理工具!强大的系统底层清理利器Dism 升级日常更新清理规则库,及同步Windows Update数据库。大幅缩减青蛙插件体积;工具箱春哥附体功能,可以无视权限运行其他程序! 适配最新程序、…

雷军晒童年照 三条杠回忆童年

6月1日,正值国际儿童节,雷军在社交媒体上分享了自己的童年照片。照片中的他左臂佩戴着少先队大队长的标志,配文:“三条杠!”此前,他还发文祝愿所有小朋友都有一个快乐的童年。雷军于1969年出生在仙桃市剅河镇赵湾村四组,在赵湾小学读到三年级后转学到仙桃城区。1984年,…

7岁男孩被3只恶犬撕咬一年后近况 仍在艰难康复中

2024年3月7日,贵州毕节一个普通的放学日,却成了一个7岁男孩及其家庭的噩梦。男孩在回家途中被三只恶犬疯狂撕咬,耳外轮廓全部被撕下,身体多处受伤,生命垂危。一年过去了,尽管事件热度已渐渐消散,但男孩和他的家人仍然深陷痛苦。这一年里,男孩经历了无数次手术,承受着肉…

余承东暗讽小米车卖爆但没那么好 质量与智驾成焦点

在2025未来汽车先行者大会上,余承东的一番话在汽车行业引起广泛关注。他提到:“我们从其他行业来的,这个公司只做一款车,就卖爆了,虽然他的产品可能不是那么好。”尽管没有点名,但许多人认为这番话针对的是小米汽车。小米自进入汽车领域以来,凭借SU7迅速打开市场,销量持…

中小企业的“链式转型“突围战

中小企业的"链式转型"突围战 引言:作为IT负责人,我眼中的中小企业"链式转型"生存与发展之道 当前,中国的中小企业在产业链中所扮演的角色正经历深刻变革。以往,许多中小企业面临着设计创款成本高、速度慢&a…

声纹技术体系:从理论基础到工程实践的完整技术架构

文章目录 一、声纹技术的理论基础与概念内核1.1 声纹的生物学本质与数学表征1.2 特征提取的理论基础与实现机制 二、声纹识别技术的演进逻辑与方法体系2.1 传统统计学方法的理论架构2.2 深度学习方法的技术革新2.3 损失函数的设计原理与优化策略 三、声纹识别系统的架构设计与模…

白宫:美法院“叫停”关税是司法越权 政府紧急动议暂缓执行

美国联邦巡回上诉法院于29日批准了特朗普政府的请求,暂时中止了美国国际贸易法院此前做出的禁止执行特朗普政府对多国加征关税措施的裁决。在美国国际贸易法院28日裁定禁止执行多项关税行政令后,特朗普政府多名官员对此表示不满,并提起了上诉。白宫新闻秘书卡罗琳莱维特称,…

开通倒计时 沈白高铁今日启动联调联试

国家“十四五”规划重点高速铁路建设项目——沈阳至长白山高速铁路今天(6月1日)正式启动联调联试,这标志着沈白高铁进入开通运营的倒计时。凌晨4点50分,首趟沈白高铁联调联试检测车从沈阳北站开出,开始对线路及信号等设备设施进行检测。沈白高铁起自沈阳北站,沿线经辽宁省…

国家队友谊赛:美国女足3-0中国女足 美国队三球完胜

北京时间6月1日,美国女足与中国女足进行了一场友谊赛。比赛中,美国女足以3-0战胜了中国女足。马卡里奥、萨姆-科菲和琳赛-霍兰分别为美国队建功。比赛开始后不久,金坤在高位逼抢门将时迫使乔伊丝出球失误,险些造成对方送礼。第3分钟,马卡里奥外围远射被潘红艳稳稳抱住。第…

我们来学mysql -- “数据备份还原”sh脚本

数据备份&还原 说明执行db_backup_cover.sh脚本 说明 环境准备:来源数据库(服务器A);目标数据库(服务器B)dbInfo.sh脚本记录基本信息 来源库、目标库的ip、port及执行路径 # MySQL 客户端和 mysqldump 的路径 MYSQL_CLIENT"/work/oracle/mysql…

JVM 基础 - JVM 内存结构

本文主要对JVM 内存结构进行讲解,注意不要和Java内存模型(详解Java内存模型)混淆了 运行时数据区一、程序计数器 1.1 作用1.2 概述 二、虚拟机栈 2.1 概述2.2 栈的存储单位2.3 栈运行原理2.4 栈帧的内部结构 三、本地方法栈 3.1 本地方法接口…

技术分享 | i.MX8MPlus Journal日志管理系统

我司IAC-IMX8MP-Kit开发板搭载NXP i.MX8M Plus SOC,该芯片采用4颗Arm Cortex-A53核心以及1颗Arm Cortex-M7核心。目前开发板默认搭载Yocto文件系统,该文件系统虽然不如Ubuntu等安装第三方软件包方便,但胜在足够精简且运行稳定,今天…

Oracle用户账号过期终极解决方案

文章目录 在这里插入图片描述1.账号过期表现如下图:2.关键的sql命令:2.1 切换用户2.2 首先需要使用dba登录.2.3 执行查询账号是否被锁还是过期2.4 查询账号的管理策略2.5 修改账号的管理策略 3.查看账号是过期还是被锁?3.1账号被锁3.2账号过期…

Flask-Login使用示例

项目结构 首先创建以下文件结构: flask_login_use/ ├── app.py ├── models.py ├── requirements.txt └── templates/├── base.html├── index.html├── login.html├── register.html└── profile.html1. requirements.txt Flask2.3.3 Fl…

刘浩存和王安宇借位吻戏 引发观众热议

在热播剧《陷入我们的热恋》中,刘浩存和王安宇饰演的少年恋人徐栀和陈路周在灯泡的温柔光晕下,脸庞越靠越近,呼吸似乎交融在一起。然而,镜头巧妙切换到墙上的影子,只留下观众对着空画面脑补那个未完成的吻。这一幕再次引发了关于吻戏借位的讨论。这并不是刘浩存第一次因吻…

步行者晋级总决赛 东决MVP西亚卡姆闪耀

北京时间6月1日,NBA东部决赛G6在印第安纳步行者主场进行,对阵纽约尼克斯。上半场双方比分紧咬,半场结束时步行者以58-54领先。第三节步行者打出34-23的攻势,确立了15分的领先优势进入末节。末节比赛中,尼克斯的唐斯带领球队反扑,但步行者哈利伯顿保持两位数的领先优势。最…

小米汽车5月交付量超过2.8万台 大规模量产在即

6月1日消息,@小米汽车称,2025年5月小米汽车交付量超过28000台。同时,小米汽车正在为小米YU7大规模量产做准备。责任编辑:zx0176