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
英文地址,請注明出處:http://en.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 一.常用命令簡單介紹 使用軟件 虛擬機…