【Python】开发工具uv

【Python】Python包管理与版本控制 理解,首先要理解它为何而生。Python的包管理历史是一个不断演进、不断解决新问题的过程。从最初的到,再到和虚拟环境工具,每一步都代表着对开发效率和环境隔离的追求。在出现之前,Python开发者面临的主要痛点包括:的创建者们深谙Python生态系统的这些挑战,并从其他语言(如Rust的、Node.js的/)的优秀包管理工具中汲取灵感,旨在构建一个全新的、高性能的、一体化的Python工具链。的核心设计哲学可以概括为以下几点:这是最引人注目的特性之一。通过以下方式实现性能的飞跃:Rust语言实现: 核心逻辑采 阅读详情
AI摘要

本文介绍Python高效开发工具uv的安装方法,包括在线与离线环境下的部署方式,并讲解其在Python解释器管理、依赖管理和脚本执行中的应用。同时说明如何使用uv tool隔离开发工具及项目打包为whl文件的最佳实践。

1. uv install

1.1 下载安装脚本来安装

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

# 用wget
wget -qO- https://astral.sh/uv/install.sh | sh

1.2 使用pipx安装uv

补充:pipx是安全地安装和运行隔离的 Python 命令行工具,它能够解决全局安装python应用( pip install --user 或 sudo pip install)的依赖冲突和环境污染问题。

sudo pip install <pkg>
安装的可执行文件位置:/usr/local/bin
安装的库文件位置:
/usr/local/lib/pythonX.X/dist-packages/ (Debian/Ubuntu)
/usr/lib/pythonX.X/site-packages/ (RHEL/CentOS)

pip install --user <pkg>
安装的可执行文件位置:~/.local/bin/
安装的库文件位置:~/.local/lib/pythonX.X/site-packages/

pipx install <pkg>
将每个工具安装在独立的虚拟环境中
~/.local/pipx/venvs/flake8/     # flake8 的独立环境

# 先安装pipx
sudo apt install pipx

# 再安装uv
pipx install uv
pipx ensurepath && source ~/.basrc

1.3 补充

  • pipx依赖venv,需要确保venv全局安装。sudo apt install python3.8-venv
  • pip安装提示,Not installing to existing directory。可能是之前失败安装存在残留文件。pipx install --force
  • 安装uv后还需要将可执行文件目录添加到$PATH。执行pipx ensurepath可以自动把pipx下载的工具的可执行文件目录都添加到$PATH

2. 考虑在离线系统上安装uv

2.1 下载并上传安装包

# 使用pip下载,.whl安装包在当前目录,可能有多个.whl文件,所以打包
pip download uv
cd .. && tar -zcvf uv.tar.gz uv/

scp uv.tar.gz cg@192.168.250.234:~/Downloads/

2.2 用户级安装uv(~/.local/bin/)

# 解压
cd ~/Downloads/
tar -zxvf uv.tar.gz

# 安装到用户级site-package
pip install --no-index --find-links=~/Downloads/uv uv
--no-index:禁止从 PyPI 下载。
--find-links=.:从当前目录查找包。

# 添加~/.local/bin到$PATH
echo 'export PATH=$HOME/.local/bin:$PATH'

2.3 补充

Q:安装包为uv-0.7.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl,包名:uv;包版本:0.7.3;python兼容版本:python3;abi标签:none,表示不依赖python abi(不依赖任何扩展的纯python包);架构:x86_64;系统兼容性:manylinux标准(manylinux_2_17和manylinux2014)。目标机器架构为arm,无法安装这个安装包。
A:确认安装包的平台版本和目标系统平台兼容,目标系统是x86_64的,则安装包应该是x86_64d的, 目标系统是arm结构的,安装包应该是arm架构的。

3. uv 管理Python解释器

# 查看uv可安装和已经安装的python版本
uv python list

# 安装指定版本的python,安装位置 /home/user01/.local/share/uv/python/
uv python install cpython-3.12

# 使用已安装的某个版本的python解释器执行
uv run -p 3.12 main.py

# 使用已安装的某个版本的python解释器进入交互式执行环境
uv run -p 3.12 python

ps: uv指定python解释器版本时,如果uv没有安装之,则会自动安装它

4. uv 管理依赖

# 创建工程
mkdir test && cd test
uv init -p 3.12

# 目录树
tree
├── .git
├── .gitignore
├── .python-version  # 3.12
├── README.md
├── main.py
└── pyproject.toml  # 跟踪项目当前依赖

# 假设项目源码文件依赖和pyproject.toml记录的不一样
uv sync

5. 用uv执行脚本

5.1 使用显式指定的依赖

假设pyproject.toml记录已经安装了requests
# main.py
import requests
import aithttp

if __name__ == '__main__':
    url = 'www.baidu.com'
    resp = requests.get(url)
    print(resp.text)
    print(aiohttp.__version__)

# 可以从pyproject.toml中找到requests,但是找不到 aiohttp。
uv run main.py

# 可以从pyproject.toml中找到requests,并且显示给定了依赖aiohttp,正常运行。aiohttp被下载到~/.cache/uv
uv run --with aiohttp main.py

# 此时忽略 pyproject.toml,requests 和 aiohttp 都找不到。
uv run --no-project main.py

5.2 使用项目的依赖

# 可以从pyproject.toml中找到requests,但是找不到 aiohttp。
uv run main.py

# 执行脚本,使用项目的虚拟环境维护依赖
uv add aiohttp  # 登记 aiohttp 及其依赖到 pyproject.toml 
uv run main.py  # 此时 pyproject.toml 记录了 aiohttp 和 requests,正常执行。

# 从项目中删除依赖
uv remove requests

PS: 使用uv查看项目的依赖关系

uv tree

test v0.1.0
└── requests v2.32.3
    ├── certifi v2025.4.26
    ├── charset-normalizer v3.4.2
    ├── idna v3.10
    └── urllib3 v2.4.0

5.3 使用脚本自己维护的依赖

# 脚本自己加上所需依赖
uv add --script main.py requests

# uv将往main.py头插入记录依赖信息的注释
# /// script
# requires-python = ">=3.13"
# dependencies = [
#     "requests",
# ]
# ///

import requests

if __name__ == '__main__':
    url = 'https://www.baidu.com'
    resp = requests.get(url)
    print(resp.text)

# 执行,以脚本模式运行,即使在uv项目中也可以不加--no-project而运行
uv run --script main.py

5.4 总结

  • uv初始化项目后首次执行run会先创建项目虚拟环境:.venv。
  • uv run xxx.py 将使用项目依赖(使用项目的虚拟环境.venv)运行。
  • uv run --with xxx将使用项目虚拟环境(.venv)和临时环境(~/.cache/uv,在临时环境中找--with指示的依赖)运行。
  • uv run --no-projecy main.py 将会使用临时环境(~/.cache/uv)运行。
  • uv run --script main.py将使用临时环境(~/.cache/uv)运行,不过脚本自己能够记录依赖信息,使用uv add --script main.py添加依赖,使用uv remove --script main.py 删除依赖。

6. python开发工具管理

开发需要python工具,可将这些工具添加到项目依赖,但这些工具不应该随其他项目依赖打包。
uv add flake8 --dev

但是实际工程中,这些工具应该与项目无关,需要在其他地方维护。另外即使通过–dev可以避免项目打包时把工具打包进去,但是添加工具时可能添加工具自己的依赖到项目中而污染了项目的虚拟环境。正确做法时使用uv tool来维护这些工具。

# 工具安装到~./cache/uv/
uv tool install flake8

# 查看已经安装的工具
uv tool list

7. 项目打包为.whl文件

# pyproject.toml文件中添加session
[project]
name = "p10-tmp"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.11"
dependencies = []

[prject.scripts]
test = ["test:main"]


# 打包
uv build 
dist
├── p10_tmp-0.1.0-py3-none-any.whl
└── p10_tmp-0.1.0.tar.gz


# 安装离线包
uv tool install dist/p10_tmp-0.1.0-py3-none-any.whl

补充

Q&A
Q:pip如何确定package安装到系统目录还是用户目录
A:pip根据以下要素判断该把package放到哪里:

  1. 是否添加–user参数:加–user参数,package放到用户级site-package中
  2. 是否处于虚拟环境激活状态:虚拟环境激活状态,package放在虚拟环境的site-package中
  3. 普通用户还是特权用户(root用户或者sudo pip install):普通用户则放在用户的site-package,特权用户则放在系统site-package中。
    注意,普通用户执行pip install 等价于pip install --user .

more about pip

• --user parameter
pip install --help
–user: Install to the Python user install directory for your platform. Typically ~/.local/, or %APPDATA%\Python on Windows. (See the Python documentation for site.USER_BASE for full details.)

• pip’'s doc
https://packaging.python.org/en/latest/tutorials/installing-packages/

新一代Python管理UV完全使用指南|附实际体验与效果对比 uv包含以下命令,前几个是比较常用的。命令描述run运行命令或脚本init创建一个新项目add向项目中添加依赖项remove从项目中移除依赖项sync更新项目的环境lock更新项目的锁定文件export将项目的锁定文件导出为其他格式tree显示项目的依赖树tool运行和安装由 Python 包提供的命令python管理 Python 版本和安装pip使用兼容 pip 的接口管理 Python 包venv创建虚拟环境build将 Python 包构建为源代码分发包和 wheelspublish。 阅读详情

相关推荐

uv 离线安装模式详解(适用 uv 0.1.x 版)

uv 离线安装模式详解

深山技术宅的博客 3107

python包管理神器【uv】详解

python包管理神器【uv】详解。管理python项目,完美替代pip等工具。

若叶的博客 1万+

Python新工具实战:uv、ruff、marimo、msgspec、polars

Python生态中,工具链效能与数据处理性能始终是开发者关注焦点。以Rust为代表的高性能原生实现正逐步重塑包管理、代码检查、数据分析等基础环节。从环境管理到DataFrame处理,新一代工具普遍采用并行计算、惰性求值、预编译解码等原理,使日常任务获得数十倍提速。这类技术适合依赖安装频繁、工程化要求高、需要处理大规模数据的场景。针对uv、ruff、marimo、msgspec、polars五个代表性项目,梳理了安装配置、代码示例与踩坑经验,可帮助开发者快速升级Python工作流。

weixin_29232121的博客 310

uv: 一个统一的Python包管理工具

uv是一个功能强大、简单易用的Python包管理工具,集成了端到端的解决方案。它在性能和可靠性上都有突出的优势。无论是小型脚本还是大型项目,从初学者到专家,uv都能很好地满足Python开发的各种需求。Astral公司希望通过uv来降低Python开发的复杂度,提高生产力。如果你在内部使用uv,并有兴趣在Python打包方面与Astral合作,欢迎联系他们,共同应对未来的挑战。

Turbo.AI,专注AI工程化 1万+

ArcGIS基础:CAD数据转换为GIS数据(符号化显示、数据转换、线转面、空间连接)

1、符号化显示: CAD数据加载进来有很多列表,包含了点【point】、线【polyline】、面【polygon】、标注数据【Annotation】等数据,本次实验我们需要用到的是面数据,也就是.dwgPolygong格式的数据。如下图所示: 把数据加载进来,然后在2处打开属性表,查看CAD数据的属性表,打开后可以发现【layer】图层表示就是地块的用地性质,它就是符号化显示的依据。 我们在数据上右键【属性】,打开图层属性,找到【符号系统】,选择类别中的【唯一值】,然后在【值字段】下拉选择【layer】,

yuanYW7556的博客 2万+

GPU运维面试题

【代码】GPU运维面试题。

u011220233的博客 696

Python 新一代包管理工具 `uv`:从入门到进阶

uvuv凭借其极速和一体化设计,正逐步成为 Python 开发者的新选择。无论是小型脚本还是大型项目,它都能显著提升开发效率。未来随着功能迭代(如原生多版本 Python 支持),其生态潜力将更加强大。

具身机器人和通用AI 9362

车载毫米波雷达实战:用MATLAB复现DDMA-MIMO雷达的Empty-band算法(附代码解析)

本文详细介绍了车载毫米波雷达中DDMA-MIMO技术的实战应用,重点解析了Empty-band算法的原理与MATLAB实现。通过搭建仿真环境,文章深入探讨了发射天线通道解调与相位法速度解模糊两大核心难题的解决方案,并提供了完整的代码解析,为雷达算法工程师提供了从理论到实践的清晰指南。

hill8的博客 559

python开发工具uv简介

uv是Astral团队推出的Rust编写的Python全能工具链,旨在替代pip、venv、pyenv、pipx等多工具组合。它集版本管理、虚拟环境创建、依赖安装与锁定、全局工具安装于一体,速度比pip快10~100倍,支持自动同步pyproject.toml与uv.lock文件,确保团队环境一致。通过一条命令完成项目初始化、依赖安装与环境同步,极大提升开发效率与可复现性,是现代Python开发的高效之选。

taotiezhengfeng的博客 238

esp8266步进电机驱动控制

blinker控制步进电机起保停,正反转(Arduino uno+esp8266+TB6600驱动器) Arduino uno的板子的程序 esp8266板子接入到Arduino uno的控制引脚上的5,6,7 esp8266程序 //****库***** #define BLINKER_WIFI //官方wifi协议库 #define BLINKER_PRINT Serial //串口协议库 #include <Blinker.h&gt

perseverance51博客 2855

Codex 自定义模型操作指南:CLI 与桌面客户端双端实操

检查版本 codex --version # 预期输出类似:codex-cli 0.133.0-alpha.1 # 如未安装 npm install -g @openai/codex假设你要接入DeepSeek,在# 临时设置(当前终端会话有效)export DEEPSEEK_API_KEY="sk-你的 DeepSeek API Key"# 永久设置(推荐,写入 shell 配置)

篮球界最会写bug的人;程序猿中打球最菜的人。 454

uv极速Python包管理实战:从零开始掌握现代开发工具链

还记得那个等待pip安装依赖的漫长下午吗?你盯着终端屏幕上不断滚动的下载进度条,心里默默计算着项目启动时间。传统的Python包管理工具让开发效率大打折扣,直到我发现了uv——这款由Rust编写的极速Python包安装器和解析器,彻底改变了我的开发体验。 想象一下,同样的依赖安装任务,`pip-sync`需要7秒,而`uv`仅需1秒。这不仅仅是速度的提升,更是开发效率的革命性突破。通过本文,你将

gitblog_00487的博客 971

芒果YOLOv8改进72:动态标签分配策略篇之ATSS:自适应训练样本选择Adaptive Training Sample Selection策略

YOLOv8代码实践|ATSS标签分配策略改进🥭

包括YOLOv5、YOLOv7、YOLOv8等模型改进 2909

Python开发工具uv:Rust驱动的一站式依赖管理与环境解决方案

在Python开发中,依赖管理和虚拟环境创建是基础且关键的环节,直接影响到项目的可维护性和团队协作效率。传统工具链如pip、venv等组合使用,常面临依赖解析缓慢、环境复制不一致等问题。基于Rust语言构建的uv工具,通过高效的并发算法和缓存机制,在原理层面实现了依赖解析与安装速度的显著提升。其技术价值在于将包管理、虚拟环境管理、项目初始化等核心功能一体化,简化了开发工作流。在应用场景上,uv特别适合多项目并行开发、团队协作以及CI/CD流水线等对效率和一致性要求高的环境。本文聚焦的uv工具,正是通过其高速

weixin_33985507的博客 341

第四节:Vben Admin登录对接后端getUserInfo接口

上一节,我们完成了/api/auth/login接口的创建,通过login接口,我们完成了登录和Token的生成。但是登陆还是报404返回,发现是Vben Admin又请求了一个/api/getUserInfo接口,本节我们就来分析完成这个接口本节,我们完成了getUserInfo接口,完成了登录操作,成功的进入到工作台页面。

cuiwin的专栏 2846

KEPServerEX物联网网关(IoT Gateway)REST客户端代理(非原创)

(中文版)资料来源于【OPC-KEPServerEX学习KEPWare交流】905485143群的【455196383】【零下一度】 一。KEPServerEX物联网网关REST客户端代理演示 在KSE中,首先构建一个带有通道/设备/标签的模拟器系统。 例如,下面是三个随机项目。 直接到IoT网关插件,添加新代理。 从类型列表中选择REST Client。 终结点...

-雲飛兄-博客 5807

Python 潮流周刊#83:uv 的使用技巧

△△请给“Python猫”加星标,以免错过文章推送本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进 Python 技术,并增长职业和副业的收入。分享了 12 篇文章,12 个开源项目,2 则热门讨论,全文 2300 字。以下是本期摘要:????文章&教程① UV 的使用技巧...

Python猫 753

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Python包管理不再头疼:uv工具快速上手

Python 包管理生态中存在多种工具,如 pip、pip-tools、poetry、conda 等,各自具备一定功能。 而今天介绍的uv 是 Astral 公司推出的一款基于 Rust 编写的 Python 包管理工具,旨在成为 “Python 的 Cargo”。 它提供了快速、可靠且易用的包管理体验,在性能、兼容性和功能上都有出色表现,为 Python 项目的开发和管理带来了新的选择。 1....

weixin_36670444的博客 3214

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

月下载破亿工具链被OpenAI打包收购!Python包管理神器uv现在姓O了

OpenAI与uv开发商Astral官宣达成收购协议,具体金额未披露。收购完成且获监管审批后,Astral团队将加入OpenAI的Codex团队。

weixin_49317973的博客 148

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

UV 与 Bun 深度解析

Bun是一个全栈 JavaScript 运行时工具集用 Zig 编写,内置 JavaScriptCore 引擎三位一体功能:运行时(替代 Node.js)包管理器(替代 npm/yarn/pnpm)构建工具(替代 webpack/vite)核心优势:启动速度比 Node.js 快 4 倍兼容 Node.js API 和 npm 包内置原生速度的测试运行器。

上善若水 972

Python 包管理的“超音速”革命:全面上手 uv 工具链

摘要: Python开发者常面临工具链速度慢、功能分散等问题。Astral团队推出的uv工具链通过Rust重写核心功能,显著提升了Python开发效率。uv整合了包安装(替代pip)、虚拟环境管理(替代venv)、Python版本管理(替代pyenv)和全局工具管理(替代pipx),实现10-100倍的性能提升。安装简单,支持多平台,完全兼容现有生态。核心优势包括极速创建虚拟环境、并行安装依赖、智能缓存和一体化操作,让开发者告别工具碎片化问题。通过uv可以快速初始化项目、管理Python版本和依赖,大幅优化

萧鼎的博客 1226

从0到1贡献uv:Rust构建的Python包管理器协作指南

作为一款用Rust编写的极速Python包管理器,uv正以革命性的性能改变开发者的依赖管理体验。本文将带你完成从环境搭建到代码提交的全流程实践,让你快速成为uv社区贡献者。读完本文,你将掌握: - 开发环境的标准化配置方案 - 高效的测试与调试技巧 - 符合社区规范的代码提交流程 - 性能优化与文档协作的最佳实践 ## 环境准备:构建高效开发流水线 ### 基础依赖安装 uv的开发需要Rus...

gitblog_00019的博客 1076

uv、Ruff、ty使用与实战

概述:安装、使用、uv sync、uv python、Rye、uvx、Ruff、ty、No module named 'mcp'、速度慢。

lonelymanontheway的博客 2502

uv 系列(二):创建现代 Python 项目——pyproject.toml与项目结构

等号左侧是用户执行的命令,右侧是模块:可调用对象。它不是 shell 别名;构建并安装项目后,安装器会创建跨平台入口脚本。

QAZ600888的博客 684

现代化Python工具:uv、Ruff、Pyright、Rich(只讲重点版)

1、基础:ide(代码编辑器); 2、底层:uv(快速Python包管理器); 3、语法:Ruff(快速Python语法检查器); 4、类型:Pyright(静态类型检查器); 5、美化:Rich(Python美化堆栈报错)

qq_43629945的博客 305

Fat-Cat Watcher Agent实战:如何给AI Agent装一双监控死循环与目标偏移的眼睛

在 Fat-Cat 这个以文档为中心的 AI Agent 框架中,**Watcher Agent** 是内置的运行时监控模块,专门解决两大顽疾:**死循环(Infinite Loop)检测**与**目标偏移(Goal Deviation)审计**。执行器每调用一次工具,Watcher 就立刻"审阅"一次执行结果——一旦发现计划跑偏,它会直接接管并改写实时计划,让任务自动回到正轨。本文带你快速理解

gitblog_01052的博客 79
上一篇: 【工具类】ssh,remote-ssh插件和sftp插件
下一篇: 【工具类】ssh使用案例
南隅。
博客等级 码龄8年 279粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值