Gradio全解13——MCP协议详解(5)——Python包命令:uv与uvx实战

Gradio全解13——MCP协议详解(5)——Python包命令:uv与uvx实战

  • 第13章 MCP协议详解
    • 13.5 Python包命令:uv与uvx实战
      • 13.5.1 uv核心亮点与常用命令
        • 1. uv介绍
        • 2. 安装与项目管理
        • 3. 脚本与工具
        • 4. Python版本与pip接口
      • 13.5.2 uv核心指令uvx解析
        • 1. uvx的命令选项与特性
        • 2. uvx的典型应用场景
        • 3. uvx与传统工具对比及其技术实现
    • 参考文献

本章目录如下:

  1. 《Gradio全解13——MCP协议详解(1)——MCP协议介绍与架构组件》
  2. 《Gradio全解13——MCP协议详解(2)——MCP能力协商与通信机制》
  3. 《Gradio全解13——MCP协议详解(3)——TypeScript介绍:特点、适用领域与实战》
  4. 《Gradio全解13——MCP协议详解(4)——TypeScript包命令:npm与npx》
  5. 《Gradio全解13——MCP协议详解(5)——Python包命令:uv与uvx实战》
  6. 《Gradio全解13——MCP协议详解(6)——MCP服务器构建、测试与示例大全》
  7. 《Gradio全解13——MCP协议详解(7)——MCP客户端》
  8. 《Gradio全解13——MCP协议详解(8)——MCP六大​功能特性》
  9. 《Gradio全解13——MCP协议详解(9)——MCP Inspector》

第13章 MCP协议详解

MCP是当前人工智能领域最热门技术之一,是实现大模型快速应用的捷径。本章将基于MCP最新方案修订版:2025-06-18,详细讲解MCP协议细节,内容包括MCP协议介绍与架构组件、MCP能力协商与通信机制、TypeScript介绍:特点、适用领域与实战、TypeScript包命令npm与npx、Python包命令uv与uvx、MCP服务器构建测试与示例大全、MCP客户端、六大​功能特性和调试工具MCP Inspector。

13.5 Python包命令:uv与uvx实战

pip是最常用的Python包管理工具,但现在出现了一个速度更快,功能更全面强大,而且被广泛用在AI MCP管理中的包工具,那就是uv。而uvx是uv的包执行命令,下面将详述并实战。

13.5.1 uv核心亮点与常用命令

本节介绍uv核心亮点,并实战其常用命令,包括安装、项目管理、脚本、工具、Python版本与pip接口等。

1. uv介绍

uv是一款由Rust打造的极速Python包和工程管理器,是一个拥有虚拟环境管理、依赖管理、Python版本管理、运行脚本、打包发布等多种功能的Python一体化工具链,可以说集齐了venv、virtualenv、pip、poetry能力于一身,官方文档链接:uv。据说uv对于包的解析安装速度比pip快数十倍,配置虚拟环境的速度也比virtualenv快数十倍,如图13-4:
在这里插入图片描述

图13-4

UV核心亮点有:
🚀 可以替代pip、pip-tools、pipx、poetry、pyenv、twine、virtualenv等一众工具的单一工具。
⚡️ 性能提升:比pip快10至100倍。
🗂️️ 通过通用锁文件机制实现全能项目管理。
❇️ 支持依赖内联元数据的脚本执行。
🐍 支持安装与控制Python版本。
🛠️ 支持运行和安装发布为Python包的工具。
🔩 兼容pip接口,在熟悉的CLI中操作的同时提高性能。
🏢 支持可扩展项目的Cargo式工作区。
💾 磁盘空间效率高,支持用于去重依赖关系的全局缓存。
⏬ 无需Rust或Python,可通过curl或pip安装。
🖥️ 跨平台支持macOS、Linux和Windows。

uv由Astral(Ruff之父)提供支持,Ruff一款基于Rust编写的极速Python静态检查器与代码格式化工具。下面将以Ruff为例,分别介绍UV的常用命令。

2. 安装与项目管理

使用官方独立安装程序安装uv:

# macOS、Linux平台
> curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
PS> powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

也可直接用pip/pipx安装:

> pip/pipx install uv

uv也可以使用Cargo、Homebrew、WinGet、Scoop、Docker等安装,并可指定版本,具体请参阅官方文档。

uv可以管理虚拟环境、项目与依赖,支持锁文件、工作区等特性,功能类似ryepoetry。以简单创建虚拟环境、初始化项目并添加依赖示例如下:

# 在当前目录下创建一个名为my-project-env的虚拟环境,使用指定的Python 3.13版本。如未命名,则在当前目录下创建一个名为.venv的虚拟环境
> uv venv -p python3.13 my-project-env
# 激活虚拟环境
# Windows (CMD): .\venv\Scripts\activate
# macOS/Linux (Bash/Zsh): source venv/bin/activate
# 然后初始化项目
> uv init example-uv
Initialized project `example-uv` at `D:\mcp\example_uv`
# 在项目中添加依赖
> cd example-uv
> uv add ruff
Resolved 2 packages in 1m 29s
Prepared 1 package in 2m 03s
Installed 1 package in 28ms+ ruff==0.12.0
# 使用ruff检查项目文件
> uv run ruff check
All checks passed!

uv支持构建及发布项目——即使该项目未使用uv管理。其他主要的项目与依赖命令有:uv lock:生成锁文件。uv sync:同步依赖到虚拟环境。uv remove:移除依赖。uv tree:查看依赖列表。uv build:生成发布包。uv publish:发布到PyPI(Python Package Index)。更多项目管理命令用法请参阅官方文档。

3. 脚本与工具

uv支持管理单文件脚本的虚拟环境与依赖。创建新脚本时,可通过内联元数据声明依赖项:

> echo 'import requests; print(requests.get("https://astral.sh"))' > example.py
> uv add --script example.py requests
Updated `example.py`
# 随后可在隔离的虚拟环境中运行脚本
> uv run example.py
Installed 5 packages in 46ms

文件example.py的内容如下:

# /// script
# requires-python = ">=3.13"
# dependencies = [
#     "requests",
# ]
# ///
'import requests; print(requests.get("https://astral.sh"))' 

uv可以执行并安装由Python包提供的命令行工具,类似于pipx。先使用uvx(即uv tool run的别名)在临时环境中运行工具:

> uvx pycowsay 'hello world!'
Installed 1 package in 60ms--------------
< 'hello world!' >--------------\   ^__^\  (oo)\_______(__)\       )\/\||----w |||     ||

再使用uv tool install安装工具:

> uv tool install ruff
Resolved 1 package in 9.31s
Installed 1 package in 54ms+ ruff==0.12.0
Installed 1 executable: ruff.exe
4. Python版本与pip接口

uv支持快速安装Python并管理版本,比如:

# 安装多个Python版本
> uv python install 3.11 3.12 3.13
# 按需下载Python版本:
> uv venv --python 3.12.0
> uv run --python pypy@3.8 -- python
# 在当前目录固定为使用特定Python版本:
> uv python pin 3.11
Pinned `.python-version` to `3.11`

其他主要方法有:uv python list:查看安装的Python版本。uv python uninstall:卸载某版本Python。

pip接口:uv提供了对常见pip、pip-tools和virtualenv命令的直接替代方案,uv通过高级功能扩展了它们的接口,例如覆盖依赖版本、跨平台解析、可重现解析、可替代解析策略等。uv pip命令是移植了pip的接口,能实现pip的所有功能并优化,语法一致且速度更快,体验更好。我们无需更改现有工作流即可迁移到uv,并通过uv pip接口体验10-100倍的速度提升。

例如,将requirements.in文件中依赖项编译生成精确的跨平台的requirements.txt文件以锁定依赖:

> uv pip compile requirements.in --universal --output-file requirements.txt

安装锁文件:

> uv pip sync docs/requirements.txt

最后删除当前目录下的名为.venv的虚拟环境:

> uv venv --remove .venv

uv pip其他主要的包管理方法有:uv pip list:列出激活环境中已安装的包。uv pip show:显示已安装包的细节。uv pip freeze:显示已安装包列表及其版本号。uv pip check:检查当前环境是否有兼容的包。uv pip uninstall:卸载包。uv pip tree:查看环境依赖。uv pip sync:同步依赖。

这些操作涵盖了使用uv进行Python项目开发和依赖管理的常见需求。总的来说,uv基本能实现venv、virtualenv、pip、poetry的所有功能,而且速度更快,功能更多,能减少工具切换的时间成本,可能会成为Python环境管理的首选工具。

13.5.2 uv核心指令uvx解析

uvx是Python包管理工具uv的重要组成部分,主要用于在隔离环境中快速运行Python命令行工具或脚本而无需永久安装工具包。下面详细解析其核心功能和使用场景。

1. uvx的命令选项与特性

uvx是工具执行器的角色,它是uv tool run的别名,前文已分别举例。uvx类似于pipx或npx,但性能更高,它允许用户直接运行以Python包形式发布的命令行工具(如代码检查工具Ruff、格式化工具Black等),而无需显式安装到本地环境。例如:

uvx ruff@latest check .  # 自动下载Ruff并执行代码检查

在特定版本上运行工具,可以使用command@<version>。这种方式避免了全局安装工具可能导致的依赖冲突,同时减少了磁盘空间的占用。
另外,--from选项可用于从特定包中调用命令,同时可以指定版本,还可用于运行带有额外功能的工具,示例如下:

uvx --from 'ruff==0.3.0' ruff check
uvx --from 'mypy[faster-cache,reports]' mypy --xml-report mypy_report

还可以使用--with选项包含其他依赖项,例如在运行mkdocs时包含mkdocs-material:

uvx --with mkdocs-material mkdocs --help

更多命令选项请参阅:uv - Using Tools。

uvx会创建临时环境以实现隔离。uvx在后台自动创建临时虚拟环境,工具运行结束后环境会被清理,确保不会污染当前项目或系统环境。这一隔离特性特别适合偶尔使用的工具或需要严格环境隔离的场景。此外,uvx还具有性能优势,由于uv基于Rust实现,uvx的工具安装和运行速度远超传统工具(如 pipx)。

2. uvx的典型应用场景

uvx的典型应用场景包括下面三种:

  1. 单次脚本或工具执行。对于只需临时使用无需安装的工具,如生成文档工具sphinx或数据分析工具pandas-profiling,可直接通过uvx运行:
uvx pandas-profiling data.csv # 生成数据分析报告后自动清理环境
  1. CI/CD流程优化。在持续集成环境中,通过uvx运行测试或代码检查工具,既能减少构建时间,又能避免工具版本冲突。例如:
uvx pytest tests/  # 在隔离环境中运行测试
  1. 跨团队协作。当项目成员需要统一工具链版本时,通过uvx运行指定版本的命令行工具,确保结果一致性。例如:
uvx black==23.12.0 --check .  # 使用固定版本的代码格式化工具
3. uvx与传统工具对比及其技术实现

uvx与传统工具pipx、npx相比如何呢?三者功能定位、性能、环境隔离性及使用场景对比见表13-2:

表13-2
工具功能定位性能环境隔离性适用场景
pipx全局CLI工具安装与管理需要重复使用的工具
npxNode.js工具临时执行Node生态的一次性工具运行
uvxPython工具临时执行高性能需求、严格隔离的场景

uvx的技术实现特点主要有以下三方面:

  1. 依赖全局缓存。uvx利用uv的全局包缓存机制,重复使用的工具包无需重复下载,进一步加速执行速度。
  2. 兼容PEP 723(内联脚本元数据的语法规范)。对于单文件脚本,uvx支持通过内联元数据(如# dependencies = ["requests"])自动解析依赖,并通过uv run直接运行。如果脚本依赖于第三方库,可以在文件顶部的格式化的注释中声明这些依赖,如13.4.1节的脚本命令示例。
  3. 跨平台支持。uvx支持macOS、Linux和Windows,且在不同平台下的行为一致,确保开发流程的跨平台兼容性。

总结:uvx是uv工具链中的高效执行模块,通过临时环境隔离和极速依赖管理,重新定义了 Python 命令行工具的使用方式。其设计理念与 Rust 生态的 Cargo 工具一脉相承,是追求效率与安全的开发者值得尝试的新一代解决方案。

参考文献

  1. Python开发人员,请不要低估TypeScript!
  2. TypeScript“杀疯了”!60% 到 70%YC 创企用它构建 AI Agent,超越 Python 有戏了?
  3. NPM vs. NPX,傻傻分不清楚
  4. uv
  5. Python 包管理工具核心指令uvx解析
  6. MCP Introduction

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

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

相关文章

OD 算法题 B卷【求最小步数】

文章目录 求最小步数 求最小步数 求从坐标零点到坐标点n的最小步数&#xff0c;一次只能沿着横坐标轴向左或向右移动2或3&#xff1b;途经的坐标点可以为负数&#xff1b; 输入描述: 坐标点n 输出描述: 从坐标零点移动到坐标点n的最小步数 n在【1,10^9】 示例1 输入&#xf…

Elasticsearch 集群升级实战指引—7.x 升级到 8.x

升级Elasticsearch集群从7.x到8.x是一项复杂且关键的任务&#xff0c;涉及重大版本变更&#xff08;如API调整、配置变更、安全功能强制启用等&#xff09;&#xff0c;可能影响集群的性能和稳定性。结合您提到的业务量增长导致索引写入变慢的问题&#xff0c;本指引不仅提供详…

JWT学习总结

文章目录 前置知识Authorization头部和 CookieCRSF攻击 JWT概念JWT认证流程使用Springboot整合JWTJwtUtil JWT案例控制器JWT拦截器注册拦截器结果 session VS Jwt 前置知识 Authorization头部和 Cookie Authorization 头部和 Cookie 是 HTTP 协议中两种不同的身份认证 / 信息…

阿里云消息队列 Apache RocketMQ 创新论文入选顶会 ACM FSE 2025

近日&#xff0c;由阿里云消息团队发表的 Apache RocketMQ 创新论文被 CCF-A 类软件工程顶级会议 FSE 2025 Industry Track 录用。 ACM FSE&#xff08;The ACM International Conference on the Foundations of Software Engineering&#xff09;是享有盛誉的国际学术会议&…

定制WordPress管理后台

WordPress作为全球最流行的建站工具&#xff0c;因其灵活性和易用性受到广泛欢迎。许多服务器提供商都支持一键安装WordPress&#xff0c;例如Hostease&#xff0c;使新手用户也能轻松搭建属于自己的网站。然而&#xff0c;后台的默认设置可能无法完全满足不同用户的需求。定制…

REST API设计与Swagger:构建高效、易用的Web服务

引言 在现代Web开发中&#xff0c;REST API已成为不同系统间通信的标准方式。一个设计良好的REST API不仅能提高开发效率&#xff0c;还能改善用户体验。而Swagger&#xff08;现称为OpenAPI&#xff09;作为API文档和测试的强大工具&#xff0c;已经成为API开发中不可或缺的一…

一个非对齐访问的问题

1、引言 最近在编写代码时&#xff0c;出现了这样一个 bug。程序一跑&#xff0c;系统就崩溃了&#xff0c;报错是 bus error。 目标平台&#xff1a;ARM32 最终定位到出错的代码片段&#xff1a; *((uint32_t *)ptr) id;这里的 ptr 是一个非 4 字节对齐的地址&#xff01;&a…

【构造】P8976 「DTOI-4」排列|普及+

本文涉及知识点 构造 P8976 「DTOI-4」排列 题目背景 Update on 2023.2.1&#xff1a;新增一组针对 yuanjiabao 的 Hack 数据&#xff0c;放置于 #21。 Update on 2023.2.2&#xff1a;新增一组针对 CourtesyWei 和 bizhidaojiaosha 的 Hack 数据&#xff0c;放置于 #22。…

多路I/O转接服务器(select、poll、epoll)

多路IO转接服务器也叫做多任务IO服务器。该类服务器实现的主旨思想是&#xff0c;不再由应用程序自己监视客户端连接&#xff0c;取而代之由内核替应用程序监视文件。 IO 多路转接方式比较&#xff1a; 常见的 IO 多路转接方式有&#xff1a;select、poll、epoll&#xff0c;他…

最新临时文件快传系统源码 轻量化 带后台

简介&#xff1a; 最新临时文件快传系统源码 轻量化 带后台 首发 轻松上传文件并生成提取码分享给他人&#xff0c;无需注册&#xff0c;方便快捷。 图片&#xff1a;

MyBatis多数据源动态连接工具类实现

这个DatabaseService工具类提供了动态创建MyBatis SqlSession的能力&#xff0c;可以灵活地连接到不同的数据库&#xff0c;非常适合需要动态切换数据源的场景。 package com.cmes.immp.device.utils;import lombok.SneakyThrows; import org.apache.commons.dbcp2.BasicDataS…

用亮数据 MCP 驱动 Trae 智能体:打造高效亚马逊商品采集与分析助手

本文适合希望快速构建数据驱动型智能体的开发者、数据工程师及 AI 产品设计者阅读 并非广告&#xff0c;希望本文可以帮助有需求的同学&#xff0c;祝大家天天开心 在数字时代&#xff0c;数据是决策与洞察趋势的关键。但移动互联网数据获取不易&#xff0c;传统爬虫技术面对复…

如何降低AIGC生成内容的重复率?五种免费降AI率的方法 (25年更新)

随着AI生成内容&#xff08;AIGC&#xff09;的普及&#xff0c;越来越多的学术写作依赖AI工具来生成论文和文章。然而&#xff0c;AI生成内容的查重率常常偏高&#xff0c;导致很多论文无法通过学术查重系统。为了解决这一问题&#xff0c;以下是五种有效的免费降AIGC率的方法…

小米YU7使用UWB技术,厘米级定位精准迎宾,安全防破解无感控车

当您双手抱着快递走向爱车时&#xff0c;车门自动解锁&#xff1b;当您站在前备箱前稍作停留&#xff0c;箱盖优雅升起——这不是科幻电影&#xff0c;而是小米YU7搭载UWB技术带来的真实体验。在2025年5月的小米15周年战略新品发布会上&#xff0c;雷军揭晓了这项革命性技术&am…

WPF学习(动画)

文章目录 一、图像变换 RenderTransform1、常见变换类型2、RenderTransform 的核心作用3、RenderTransform 的使用方式4、与 LayoutTransform 的对比5、在动画中的应用 二、 滚动的椭圆三、Storyboard放置位置1. **元素的 Resources 集合**2. **控件模板&#xff08;ControlTem…

Crossbar结构的排队策略

目录 一、概述 二、排队策略 三、输入排队结构(IQ) 3.1 结构特点 3.2 改进方案 四、输出排队结构&#xff08;OQ&#xff09; 五、输入输出联合排队结构(CIOQ) 六、输入交叉节点联合排队结构(CICQ) 一、概述 Crossbar是一种全连接的交换结构&#xff0c;由 MN 个交叉…

状态模式 - Flutter中的状态变身术,让对象随“状态“自由切换行为!

订单状态流转/播放器控制/游戏角色行为…一个模式搞定所有状态驱动型逻辑&#xff01; 经典场景&#xff1a;订单状态管理 假设你在开发一个外卖App&#xff0c;订单有以下状态&#xff1a; 等待接单已接单配送中已完成已取消 每个状态下&#xff1a; 显示的UI不同可执行的…

数据库9:数据库字符编码调整与校队(排序)规则

一.常用字符编码 1.ASCII编码 用一个字节表示一个字符 2.ANSI编码 每个国家为了显示本国的语言而对ASCII码进行了拓展 用两个字节表示一个汉字&#xff0c;中国的ANSI编码是GB2312编码&#xff08;简体&#xff09;&#xff0c;日本的ANSI编码是JIS编码&#xff0c;台湾的A…

人脸活体识别4:Android实现人脸眨眼 张嘴 点头 摇头识别(可实时检测)

人脸活体识别4&#xff1a;Android实现人脸眨眼 张嘴 点头 摇头识别(可实时检测) 目录 人脸活体识别4&#xff1a;Android实现人脸眨眼 张嘴 点头 摇头识别(可实时检测) 1. 前言 2.人脸活体识别方法 &#xff08;1&#xff09;基于人脸动作的检测​​ &#xff08;2&…

DAY1-Linux操作系统1

文章参考【黑马程序员Python教程_600集Python从入门到精通教程&#xff08;懂中文就能学会&#xff09;】 https://www.bilibili.com/video/BV1ex411x7Em/?p40&share_sourcecopy_web&vd_source263bbee2ddeb835c3ab6d9d3c80e0f7c 一.常用命令简单介绍 使用软件 虚拟机…