Python uv包管理工具使用详解

article/2025/6/28 21:41:37

一、UV 工具概述

UV​ 是由 Astral 团队(Ruff 工具开发者)用 Rust 编写的新一代 Python 包管理器,旨在替代传统工具链(如 pip、virtualenv、poetry 等),提供以下核心优势

  • 极速性能​:依赖解析与安装速度比 pip 快 10-100 倍,尤其在大型项目中优势显著。
  • 一体化功能​:集成虚拟环境管理、依赖锁定、Python 版本控制、脚本执行等。
  • 兼容性​:支持 pyproject.toml 和 requirements.txt,无缝迁移现有项目。
  • 跨平台​:支持 Windows、macOS 和 Linux。

二、安装与配置

1. 安装 UV

根据操作系统选择以下方式:

  • macOS/Linux​:
    curl -LsSf https://astral.sh/uv/install.sh | sh
  • Windows (PowerShell)​​:
    irm https://astral.sh/uv/install.ps1 | iex
  • pip 安装​(功能受限,不推荐):
    pip install uv

验证安装:uv --version

2. 配置环境变量

安装完成后,按提示将 UV 添加到系统 PATH(默认路径:~/.local/bin 或 $HOME/.cargo/bin)。

三、核心功能详解

1. 虚拟环境管理
  • 创建虚拟环境​:
    uv venv  # 默认创建到当前目录的 .venv 文件夹#可以尝试uv venv .myvenv创建名为.myvenv目录的虚拟环境。但楼主遇到了问题,这个问题排查好久未解决,索性直接用.venv
    遇到的问题如下,尝试很多方案未解决
  • 支持指定 Python 版本:
    uv venv --python 3.11  # 使用系统已安装的 Python
    uv venv --python 3.13.0  # 自动下载并安装指定版本[5,13](@ref)
  • 激活环境​:
    # macOS/Linux
    source myenv/bin/activate
    # Windows
    myenv\Scripts\activate
2. 依赖管理
  • 安装单个包​(自动写入 pyproject.toml):
    uv add requests pandas  # 安装并记录核心依赖
    uv add --dev pytest     # 开发依赖[5,13](@ref)
  • 批量安装​:
    uv install -r requirements.txt  # 从文件安装
    uv install .                    # 安装当前项目依赖[8,13](@ref)
  • 依赖锁定​:
    uv lock               # 生成 uv.lock 文件
    uv sync --locked      # 根据锁定文件安装依赖(CI/CD 推荐)[13](@ref)
  • 升级/移除依赖​:
    uv sync --upgrade          # 更新所有依赖
    uv sync --upgrade-package pandas  # 指定更新
    uv remove requests         # 移除依赖[8,13](@ref)
3. 项目管理
  • 初始化项目​:
    uv init myproject  # 生成 pyproject.toml 和 .venv
    示例 pyproject.toml 配置:
    [project]
    name = "my_project"
    version = "0.1.0"
    dependencies = ["requests>=2.28"]
    requires-python = ">=3.10"
    [project.optional-dependencies]
    dev = ["pytest", "black"][5,13](@ref)
4. 高级功能
  • 脚本依赖注入​:
    uv add --script example.py requests  # 在脚本头部添加依赖声明
    uv run example.py                   # 自动安装并运行[4,9](@ref)
  • 工具管理​(类似 pipx):
    uv tool install black         # 全局安装代码格式化工具
    uvx black .                   # 在隔离环境中运行[4,9](@ref)
  • Python 版本管理​:
    uv python list               # 查看可用版本
    uv python install 3.13       # 安装指定版本
    uv python pin 3.13           # 设置项目默认版本[5,12](@ref)

四、最佳实践

1. 工作流推荐
  1. 初始化项目​:
    uv init myproject --python 3.11
    cd myproject
  2. 添加依赖​:
    uv add fastapi uvicorn
    uv add --dev pytest
  3. 同步环境​:
    uv sync  # 安装依赖并更新锁定文件
  4. 团队协作​:
    • 提交 pyproject.toml 和 uv.lock 到版本控制。
    • 其他成员克隆后执行 uv sync --locked 即可复现环境。
2. 性能优化
  • 并行安装​:
    uv install -j8  # 使用 8 线程加速[2,8](@ref)
  • 离线模式​:
    uv install --offline  # 利用缓存安装[2](@ref)

五、与其他工具对比

功能UVpipPoetry
安装速度⚡ 极快(Rust 实现)中等
虚拟环境管理✅ 内置❌ 需配合 venv✅ 内置
依赖锁定✅ 自动生成 lock❌ 需 pip-tools✅ 支持
Python 版本控制✅ 支持
脚本运行✅ 原生支持

六、常见问题处理

  • 依赖冲突​:使用 uv check 检查冲突,手动指定版本约束后重新同步。
  • 缓存清理​:uv cache clean 释放磁盘空间。
  • 环境损坏​:删除 .venv 后重新执行 uv sync

通过以上指南,开发者可充分利用 UV 的高效特性优化 Python 项目管理流程。如需更深入的功能探索(如多工作区管理、自定义构建),建议参考 官方文档。


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

相关文章

30V/3A,云岑CP8335B,完美替换EUP3484

1 FEATURES ● Wide Input Voltage Range: 6V ~ 30V ● Low RDS(ON) for Internal Switches (Top/Bottom): 90mΩ/65 mΩ ● 3A output current capability ● 500kHz Switching Frequency Minimize the External Components ● Internal 1.5-ms Soft-Start ● 0.6V/0.8V/0.925…

Baklib内容中台AI赋能智能服务升级

AI驱动服务智能升级 通过智能语义解析与上下文意图识别技术的深度融合,Baklib内容中台实现了服务流程的智能化跃迁。基于自然语言处理(NLP)算法,系统能够自动拆解用户输入的复杂语义,精准识别隐性需求与交互场景&…

论文解读 - 统一的多模态理解和生成模型综述(下)

五、统一模型的数据集 大规模、高质量且多样化的训练数据是构建强大的统一多模态理解和生成模型的基础。这些模型通常需要在大量图像-文本对上进行预训练,以学习跨模态的相关性和表示。需要注意的是,在大规模多模态数据上进行训练之前,这些模…

(附代码)Langchain中语义文档分割器的使用与介绍

语义文档分割器的使用与背景 在前面文章中使用的文档分割器都是使用 特定字符 对文本进行拆分,这种拆分模式虽然考虑了文档中的上下文切断的问题,但是并没有考虑句子之间的语义相似性。如果有一篇长文本,需要将其分割成语义相关的块&#xf…

南航通报客机起飞15分钟紧急降落 电池冒烟引发返航

中国南方航空在微博上发布消息称,5月31日,CZ6850杭州飞往深圳的航班上发生了一起电池冒烟事件。一名乘客携带的相机电池和充电宝突然冒烟,乘务组迅速采取措施,及时处理了这一突发情况,消除了安全隐患。为了保障所有人的安全,机组决定立即返航,最终航班在起飞15分钟后安全…

华为OD机试真题——通过软盘拷贝文件(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现

2025 A卷 200分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式! 本文收录于专栏:《2025华为OD真题目录+全流程解析/备考攻略/经验分享》 华为OD机试真题《通过…

msvcp140.dll丢失?6种有效解决方法,解决程序启动错误!

“msvcp140.dll 丢失,无法启动程序!” —— 当你运行某些软件或游戏时,是否遇到这样的错误提示?msvcp140.dll 是 Microsoft Visual C 2015-2022 运行时库的核心文件,许多应用程序依赖它才能正常运行。一旦该文件缺失、…

本周披露并购重组进展的A股名单一览 并购活跃注入新动能

A股市场并购重组持续活跃,产业整合与战略转型交织,为资本市场注入新动能。二级市场上,拟购买包装饮用水公司江西润田实业100%股权的ST联合周五收盘实现3连板,拟跨界收购超高速视觉仪器厂商中科视界的富煌钢构斩获2连板。本周披露并购重组进展的A股上市公司共有16家,包括渤…

车辆坠桥致5死的断头路已加高护栏 新防护装置到位

近日,广东省东莞市环莞快速路虎门段发生了一起小汽车坠桥事故,导致5人死亡,引起了广泛关注。据通报,5月19日18时23分,一辆小汽车搭载4人沿环莞快速路行驶至虎门一水库特大桥路段时,因超速冲破防撞沙桶和护栏后坠桥,车上5名司乘人员受伤,送医抢救无效死亡。死者家属在接…

李连杰邀请头条网友提问 探讨武术与公益

62岁的李连杰在今年4月19日回归微博后,又于5月31日宣布入驻今日头条和抖音平台,让影迷们感叹“失踪人口重回大众视野”。当天,李连杰在抖音上发布了三条视频,讲述了自己开设抖音账号的原因,并介绍了端午节的习俗。他在视频中表示,希望与大家探讨武术、公益、电影和慈善等…

卫星地图 App 的实测体验深度解析

卫星地图 App 的实测体验深度解析 奥维互动地图 国内领先的地理数据平台: 整合天地图、百度地图、高德地图等主流数据源,国内高清卫星影像覆盖率高达98%,农村地区影像分辨率可达0.5米。支持BIM建模与实景三维模型加载,工程测绘…

【速写】PPOTrainer样例与错误思考(少量DAPO)

文章目录 序言1 TRL的PPO官方样例分析2 确实可行的PPOTrainer版本3 附录:DeepSeek关于PPOTrainer示例代码的对话记录Round 1(给定模型数据集,让它开始写PPO示例)Round 2 (指出PPOTrainer的参数问题)关键问题…

特朗普称将提高进口钢材关税激怒美盟友

“经济自残” 特朗普称将提高进口钢材关税激怒美盟友当地时间5月30日,美国总统特朗普称,将把美国进口钢铁和铝的关税从目前的25%上调至50%,引发加拿大和澳大利亚多方反对。加拿大劳工大会主席贝娅布鲁斯克表示,特朗普决定提高美国进口钢材关税是“对加拿大的又一次直接攻击…

你的龙舟我的龙舟好像不一样 端午风俗各具特色

划龙舟是端午节最热闹、最让人激动的内容之一。孩子们除了插艾草、挂菖蒲、吃粽子外,最喜欢的就是观看划龙舟。初夏的天气,天蓝水碧,轻风拂面。端午节那天,几艘龙舟一字排列停泊在河里。两岸彩旗飘扬,人山人海。哨声一响,顿时锣鼓喧天,喊声阵阵。几条龙舟像离弦的箭在水…

神二十乘组太空送来端午祝福 天地共享粽香

神舟二十号航天员乘组三名航天员陈冬、陈中瑞、王杰进驻中国空间站已经一个多月。5月31日,他们在太空迎来第一个中国传统节日端午节,并从太空发来祝福。他们祝愿祖国蒸蒸日上,亿万同胞幸福美满、端午安康。此前,不少航天员也在太空中度过端午节。2012年6月23日,神舟九号航…

记者租7辆车有6辆是“非营运”性质 隐患重重引关注

在租车平台租赁车辆时,很多人可能不会特别关注车辆是“营运”还是“非营运”的使用性质。然而,根据《中华人民共和国道路运输条例》规定,非营运车辆不得从事租赁经营活动。如果租到非营运车辆,一旦发生交通事故,保险公司可能会因为车辆用途不符而拒保。胡女士今年刚拿到驾…

《脱缰者也》入围上影节金爵奖 津式黑色幽默引期待

5月31日,第二十七届上海国际电影节金爵奖入围名单揭晓。12部来自全球各地的优秀影片脱颖而出,其中多部中国影片凭借独特的题材、深刻的内涵和出色的创作团队备受关注。曹保平的新作《脱僵者也》再度入围,郭麒麟和齐溪联袂为观众呈现独特的“津式黑色幽默”。青年导演仇晟携新…

新加坡公开赛女单4强国羽占3席 展现强大实力

在北京时间5月30日结束的2025年新加坡羽毛球公开赛1/4决赛中,中国队表现优异。女单方面,陈雨菲、王祉怡和韩悦均晋级四强;男单陆光祖也成功晋级;女双刘圣书/谭宁和贾一凡/张殊贤顺利进入下一轮;混双郭新娃/陈芳卉同样闯入四强。陈雨菲在女单赛场上的表现尤为抢眼,她以两局…

NodeMediaEdge接入NodeMediaServer

如何使用NME接入NMS 简介 NodeMediaEdge是一款部署在监控摄像机网络前端中,拉取Onvif或者rtsp/rtmp/http视频流并使用rtmp/kmp推送到公网流媒体服务器的工具。 通过云平台协议注册到NodeMediaServer后,可以同NodeMediaServer结合使用。使用图形化的管理…

相关部门回应西瓜扔鱼塘喂鱼 尾瓜处理非滞销所致

近日,有博主发布视频称广西崇左扶绥县的西瓜价格大幅下跌,部分瓜农将西瓜扔进鱼塘喂鱼,导致几万斤西瓜烂在地里。网传视频中显示,果农将西瓜扔进池塘喂鱼。5月30日,扶绥县经济作物站工作人员表示,被扔进鱼塘的主要是尾瓜和次瓜,质量不好无法销售,因此用这种方式处理。当…