惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
Simon Willison's Weblog
Simon Willison's Weblog
Microsoft Security Blog
Microsoft Security Blog
Y
Y Combinator Blog
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
F
Fortinet All Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
A
About on SuperTechFans
Last Week in AI
Last Week in AI
月光博客
月光博客
有赞技术团队
有赞技术团队
P
Proofpoint News Feed
MyScale Blog
MyScale Blog
Martin Fowler
Martin Fowler
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
Check Point Blog
U
Unit 42
The Register - Security
The Register - Security
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Hugging Face - Blog
Hugging Face - Blog
阮一峰的网络日志
阮一峰的网络日志
V
Visual Studio Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
D
DataBreaches.Net
WordPress大学
WordPress大学
aimingoo的专栏
aimingoo的专栏
H
Hacker News: Front Page
Recent Announcements
Recent Announcements
C
CXSECURITY Database RSS Feed - CXSecurity.com
Latest news
Latest news
小众软件
小众软件
P
Palo Alto Networks Blog
PCI Perspectives
PCI Perspectives
Security Latest
Security Latest
S
Secure Thoughts
Scott Helme
Scott Helme
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Threat Research - Cisco Blogs
P
Proofpoint News Feed
M
MIT News - Artificial intelligence
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
Recorded Future
Recorded Future
O
OpenAI News
S
Securelist
云风的 BLOG
云风的 BLOG
H
Help Net Security
T
Troy Hunt's Blog

博客园 - 漫思

python使用.env构建开发和生产环境 python项目的构建 nodejs构建CICD时的思考  成为 AI 智能体工程师的 10 个步骤 es6的 yield python 中的 yield 笔记本的A壳 thinkpad 更换 reduce() in Python python的字段赋值和取值的操作 python的语法类似于lodash分组展开,合并分组操作 SelectMany C# lodash 数组的常用做法 lodash里面的常用方法 技术的边界 Reduce 和 Transduce 的含义 尤雨溪创办的 VoidZero 官宣加入 Cloudflare,前端 Vite 等保持开源 Ramda 函数库参考教程 ramda es 数组的方法 flatmap map object.entity的教程 Map与FlatMap:在数据处理中的区别与联系 flat、flatmap与map的用法区别1 flat、flatmap与map的用法区别 AI不是从天而降,它经历了七十年三起三落:读懂AI的第三课 Agent 17 种架构模式 分析 & 思考 只有踩过坑才懂:前端生成唯一 ID,别用 Date.now ()了!试试它crypto.randomUUID() FastAPI python并发 代码是 AI 写的,生产事故谁背锅? AI Agent 走出 Demo 幻觉的唯一解药:Harness Engineering 高管的 AI 精神病 小米开源可控视频音效生成模型 ControlFoley ​IBM 联合红帽投资 50 亿美元:帮助企业确保开源软件安全 国家大基金领投 DeepSeek,首轮融资投前估值 450 亿美元 SpaceX 自研 AI 训练栈 V1.0 接近完工:用 C 重写、适配 22 万块 GB300 GPU 高管的 AI 精神病 - 漫思 做一款企业真正敢用的AI测试应用,到底有多难?究竟难在哪? - 漫思 工良吐槽篇:万字长文细说 AI 落地之笑谈 koarouter的路由基本能力 7. 简单语句 class-validator class- @koa/router 分路由 这是我见过的最好的koa2 classvalidate typeorm的能力 HLS.js destroy时会取消请求吗 从入门到精通:2025年本体管理工具选型指南,8款工具助你驾驭语义网络 一文入门智能体:dify 超快速构建AI agent C# 15 类型系统改进:Union Types skill网站 应无所住,而生其心 process.stdin.isTTY 谷歌学术走过风雨十年 听创始人畅谈苦辣酸甜 - 漫思 process.stdin.isTTY 是false的具体情况 asyncio 较为复杂的demo asyncio 简单demo python Annotated 独家解读:淘宝使用 Node.js 的 TypeScript 多场景开发和实践 mac uv 使用 Python 包管理工具 uv 使用教程 python的uv lobehubui python的enum通过int进行初始化 python的枚举类型 深度拆解:AI 智能体 Harness 的构造【译】 LlamaIndex是什么?LlamaIndex综述!看这一篇就够了! python和langchain的简单教程 nodejs的顶尖开源项目 基础Pydantic+TypedDict+Annotated +Dataclass 深度解析Python结构化数据工具:dataclass、Pydantic Model与TypedDict 被 LangChain 全家桶搞晕了?LangGraph、LangSmith、LangFlow 一文读懂 - 漫思 谁才是企业级开源平台的优选?OpenCSG与Dify、Coze、Langflow、Ollama 的差异化之路 四大框架全景解析:LangChain、LangGraph、DeepAgent、LangFlow 测试数据管理方式对比:dict vs dataclass vs TypedDict 革命性的写作:MDX 让你的 Markdown 全面动起来 Python - pydantic 入门介绍与 Models 的简单使用 欢迎使用 Pydantic¶ python模块导入 Python 里通常说“数组切片”,大多数时候指的是列表切片。基本格式是: 自定义hook的写法 Python 遍历字典的8种方法 python基础教程 or的简单用法 C# 15 引入了 联合类型 asyncio的基础理论 flask配置热更新 Form.Item 无法直接绑定两个 name Form.Item 的双向翻译官:getValueFromEvent 与 getValueProps Knex.js入门指南:Node.js最强大的SQL查询构建器 knex.js1 Knex.js RFC 9535:JSONPath 的标准化之路 C#多线程Thread.Join()的详解 Pretext:值得关注的文本排版引擎 Flask入门(四):Flask静态文件及配置 【高并发】消息队列思路 为何高并发系统中都要使用消息队列?这次彻底懂了! Node.js 消息队列应用:RabbitMQ、Kafka 与处理高并发任务 大文件上传下载处理方案-断点续传,秒传,分片,合并 Node.js 缓存策略优化:Redis、Memcached 与本地缓存实现 .NET开发者的救星:8个让你告别996的高效库 别再吹牛了,100% Vibe Coding 存在无法自洽的逻辑漏洞!
Python依赖管理新标杆:UV工具安装与实战指南
漫思 · 2026-05-20 · via 博客园 - 漫思

Python依赖管理新标杆:UV工具安装与实战指南

简介: UV是2025年Python开发新宠,基于Rust打造,安装速度提升10-100倍,集成包管理、虚拟环境、依赖锁定等五大功能。支持全平台,配置镜像源后可极速安装,显著优化CI/CD流程,助力开发者高效构建项目。


免费编程软件「python+pycharm」
链接:https://pan.quark.cn/s/48a86be2fdc0

在Python开发领域,依赖管理始终是绕不开的核心痛点。传统工具链(如pip+virtualenv)在大型项目中常出现解析速度慢、环境冲突频发等问题。2025年,由Rust编写的UV工具横空出世,凭借其10-100倍的安装速度提升和全流程集成能力,迅速成为开发者热议的焦点。本文将通过真实场景案例,系统讲解UV的安装配置与核心功能使用。
探秘代理IP并发连接数限制的那点事.png

一、UV为何成为开发者的新宠?
1.1 性能革命:Rust加持的极速体验
传统pip工具在解析复杂依赖时,常因单线程顺序执行导致卡顿。UV通过Rust实现并行化网络请求和智能缓存机制,在测试中展现出惊人性能:

无缓存场景:安装NumPy+Pandas仅需2.3秒(pip需28秒)
有缓存场景:重复安装相同依赖耗时0.5秒(pip仍需12秒)
依赖解析速度:比Poetry快8倍,比pip快115倍
某AI团队实测显示,使用UV后CI/CD流水线从12分钟缩短至1分15秒,构建效率提升89%。

1.2 功能集成:一站式解决方案
UV创新性地将五大核心功能整合到单个工具中:

功能模块 传统方案 UV实现方式
包管理 pip/pip-tools uv pip install
虚拟环境 virtualenv/venv uv venv自动创建
依赖锁定 pip-compile+requirements 自动生成uv.lock文件
Python版本管理 pyenv uv python install 3.12
工具链管理 pipx uv tool install ruff
这种集成设计使开发者无需在多个工具间切换,项目目录结构更简洁。

二、三分钟极速安装指南
2.1 系统要求与前置检查
Python版本:建议3.8+(支持3.7-3.14)
操作系统:Windows/macOS/Linux全平台支持
网络环境:需访问PyPI镜像源(国内用户建议配置清华源)
执行前可通过以下命令检查环境:

python --version # 确认Python已安装
curl --version # Linux/macOS检查curl
which powershell # Windows确认PowerShell路径

2.2 官方推荐安装方式
Windows系统(PowerShell)

以管理员身份运行PowerShell

Set-ExecutionPolicy Bypass -Scope Process -Force
irm https://astral.sh/uv/install.ps1 | iex

安装完成后验证:

uv --version # 应显示类似"uv 0.7.12"

macOS/Linux系统

标准安装命令

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

指定版本安装(如0.7.12)

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

特殊场景处理
代理环境:添加--proxy http://proxy.example.com:8080参数
权限问题:Linux/macOS前加sudo(不推荐,建议用普通用户安装)
验证安装:执行uv --help查看命令列表
2.3 国内镜像源配置
方法一:系统环境变量(全局生效)

Linux/macOS

echo 'export UV_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple' >> ~/.bashrc
source ~/.bashrc

Windows PowerShell

$env:UV_INDEX_URL="https://pypi.tuna.tsinghua.edu.cn/simple"

方法二:项目级配置(pyproject.toml)
[tool.uv]
index-url = "https://pypi.tuna.tsinghua.edu.cn/simple/"

方法三:临时换源(单次命令)
UV_INDEX_URL=https://mirrors.aliyun.com/pypi/simple/ uv pip install pandas

三、核心功能实战演示
3.1 项目初始化与依赖管理
创建新项目
mkdir my_project && cd my_project
uv init # 自动生成pyproject.toml和.venv

生成的文件结构:

.
├── .venv/ # 虚拟环境目录
├── pyproject.toml # 项目配置文件
└── uv.lock # 依赖锁定文件

添加依赖

安装生产依赖

uv add requests

安装开发依赖(如测试工具)

uv add pytest --dev

从requirements.txt导入

uv add -r requirements.txt

依赖树可视化
uv tree # 显示完整依赖关系
uv tree --depth 2 # 限制显示层级
uv tree --outdated # 高亮显示可升级包

3.2 虚拟环境管理
创建指定Python版本环境

列出可用Python版本

uv python list

安装Python 3.12(自动下载独立编译版本)

uv python install 3.12

创建使用3.12的环境

uv venv --python 3.12 my_env

环境激活与运行

无需手动激活,直接运行脚本

uv run python main.py

显式进入环境(特殊需求时使用)

source .venv/bin/activate # Linux/macOS
..venv\Scripts\activate # Windows

3.3 依赖锁定与同步
生成锁定文件
uv lock # 自动更新uv.lock
uv lock --upgrade-package numpy # 仅升级指定包

依赖同步

根据锁定文件安装依赖

uv sync

强制同步(即使本地有修改)

uv sync --force

3.4 工具链集成
安装命令行工具

类似pipx的隔离安装

uv tool install ruff # 安装代码检查工具
uv tool run ruff check . # 直接运行工具

全局可用工具安装

uv tool install --global black # 安装格式化工具

Python脚本开发

初始化脚本项目

uv init --script analyze.py

添加脚本依赖

uv add pandas --script analyze.py

运行脚本(自动处理依赖)

uv run analyze.py

四、企业级场景应用
4.1 CI/CD流水线集成
以GitHub Actions为例:

jobs:
build:
steps:

  - name: Install UV
    run: curl -LsSf https://astral.sh/uv/install.sh | sh

  - name: Install dependencies
    run: uv sync

  - name: Run tests
    run: uv run pytest

某电商团队实测显示,使用UV后:

依赖安装环节从3分20秒降至18秒
缓存命中率提升至92%
构建失败率下降76%
4.2 多版本Python管理
开发环境配置

安装多个Python版本

uv python install 3.11
uv python install 3.12

切换项目使用的Python版本

uv python use 3.12

验证当前版本

uv python find

生产环境部署

生成跨平台锁定文件

uv lock --platform linux --python-version 3.11

在服务器同步依赖

uv sync --platform linux

4.3 安全合规实践
依赖审计

检查已知漏洞

uv audit

生成SBOM(软件物料清单)

uv sbom generate --format spdx

私有仓库配置

pyproject.toml配置

[[tool.uv.index]]
url = "https://private-repo.example.com/simple/"
username = "deploy-user"
password = "${ { secrets.PYPI_PASSWORD }}"

五、常见问题解决方案
5.1 安装失败处理
现象:执行安装命令后报错"Connection refused"
解决方案:

检查网络代理设置
尝试指定镜像源:
UV_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple/ uv --version

手动下载安装脚本检查内容:
curl -L https://astral.sh/uv/install.sh > install.sh
cat install.sh # 检查脚本安全性
sh install.sh

5.2 依赖冲突解决
现象:执行uv sync时出现"Could not find a version that satisfies"
解决方案:

查看详细冲突信息:
uv sync --verbose

使用依赖覆盖文件(overrides.toml):

overrides.toml

[package.numpy]
version = "=1.26.4"

执行强制同步:
uv sync --force --overrides overrides.toml

5.3 性能优化技巧
场景:大型项目安装速度未达预期
优化方案:

启用多线程下载(默认已开启,可调整):
echo 'uv_download_concurrency = 16' >> ~/.uv/config.toml

扩大缓存目录:
echo 'uv_cache_dir = "/mnt/bigdisk/.uv_cache"' >> ~/.uv/config.toml

使用预编译的Python版本:
uv python install --prebuilt 3.12

六、未来演进方向
根据Astral团队2025年路线图,UV将在以下领域持续进化:

AI辅助依赖管理:通过机器学习预测最佳依赖组合
Web界面:提供可视化依赖关系图编辑功能
移动端支持:开发iOS/Android端的依赖管理工具
区块链存证:为依赖关系提供不可篡改的审计追踪
结语
UV的出现标志着Python依赖管理进入新时代。其Rust内核带来的性能飞跃,配合精心设计的功能集成,正在重塑开发者的工作流程。从个人脚本开发到企业级微服务架构,UV都展现出强大的适应能力。建议开发者从新项目开始尝试UV,逐步迁移现有项目,体验下一代包管理工具带来的效率革命。

立即行动:在终端执行以下命令开启UV之旅:

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