Python uv 依赖管理工具的安装及使用

核心概念:uv 是什么?

uv 是一个用 Rust 编写的高速、一体化的 Python 包管理器和项目工作流工具。可以把它看作是 pippip-toolsvirtualenvpytest 等工具的超级替代品

它的目标是提供极致的速度和无缝的开发者体验,由 Astral 公司开发(这家公司同时也是 Ruff 的创造者)。


1. uv 的主要功能和使用

安装 uv

在 macOS 和 Linux 上,通常使用一键安装脚本:

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

安装后,重启你的终端或运行 source ~/.bashrc(或对应 shell 的配置文件)。

在 Windows 上,可以使用 Powershell:

powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

或者你也可以通过 pip 安装(虽然不推荐,因为 uv 的目标是管理 Python 环境,而不是被 Python 管理):

pip install uv 
使用 uv 管理虚拟环境

uv 可以创建和管理虚拟环境,速度非常快。

  1. 激活虚拟环境
    • Linux/macOS: source .venv/bin/activate
    • Windows: .venv\Scripts\activate

创建虚拟环境

# 在当前目录创建 `.venv` 虚拟环境 uv venv # 指定 Python 版本和路径创建虚拟环境 uv venv --python 3.11 uv venv --python 3.12 /path/to/venv 
使用 uv 管理依赖(替代 pip)

uv 的核心功能是快速安装 Python 包。

将依赖安装到当前环境

# 如果你已经激活了一个虚拟环境,可以直接安装 uv install requests 

从文件安装依赖

# 类似于 `pip install -r requirements.txt` uv pip install -r requirements.txt # 或者使用 uv 自己的方式(更推荐) uv add -r requirements.txt 

安装单个包

uv add requests 
使用 uv 管理项目(替代 Poetry/PDM)

uv 可以作为项目依赖管理器,类似于 Poetry 或 PDM,它会使用 pyproject.toml

  1. 锁定依赖版本
    uv 在运行 uv adduv sync 时会自动生成/更新 uv.lock 文件。

运行项目脚本

uv run python my_script.py # 如果项目依赖了某个命令行工具,比如 `pytest` uv run pytest 

同步依赖(安装 pyproject.toml 中的所有包)

uv sync

添加依赖

# 这会自动更新 pyproject.toml 并安装包 uv add flask uv add pytest --dev # 添加开发依赖

初始化一个新项目

uv init my-project cd my-project 

2. uvx 是什么?如何使用?

uvxuv 工具集中的一个命令,它的全称是 UV eXecute

它的核心功能是:无需预先安装,直接运行一个 Python 命令行工具(包)

可以把它看作是 pipx 的极速替代品

uvx 的使用场景

当你需要临时运行一个 Python 编写的命令行工具(例如 httpie, youtube-dl, black, mypy 等),但又不想把它安装到你的项目或全局环境中时,uvx 是完美的选择。

uvx 的基本用法
# 运行最新版本的 httpie uvx httpie # 运行特定版本的 black 代码格式化工具 uvx "black==23.0.0" --check .# 运行一个 GitHub 仓库中的工具 uvx "git+https://github.com/astral-sh/ruff.git" check .# 从本地目录运行一个工具 uvx "./my-local-tool"
工作原理
  1. 当你第一次运行 uvx <package> 时,uv 会:
    • 在一个独立的、隔离的虚拟环境中安装这个包。
    • 缓存这个环境。
  2. 然后,它直接运行这个环境中该包提供的命令行工具。
  3. 当你下次运行同一个版本的包时,uv 会直接从缓存中启动它,速度极快。
uvx 的常见用例

网络与工具

uvx http --version # 使用 HTTPie uvx cowsay "Hello!"# 趣味工具

开发工具

uvx pre-commit run -a # 运行 git pre-commit hooks uvx pytest # 运行测试(如果项目没安装 pytest)

代码格式化与检查

uvx black .# 格式化代码 uvx isort .# 排序 import uvx ruff check .# 快速代码检查 uvx mypy .# 类型检查

uv 和 uvx 的优势总结

  1. 极致的速度:得益于 Rust 和高效的缓存策略,依赖解析和安装速度远超传统 Python 工具。
  2. 一体化工具:一个 uv 工具解决了包管理、虚拟环境、运行脚本、运行全局工具等多个问题,无需在 pipvenvpipxpoetry 之间切换。
  3. 优秀的用户体验:命令设计直观,错误信息清晰。
  4. 跨平台:在 Windows, macOS, Linux 上都有良好的支持。
  5. 与现有生态兼容:它理解 requirements.txtpyproject.toml,可以无缝接入现有项目。

总结对比表

传统工作流uv 工作流说明
python -m venv .venvuv venv创建虚拟环境
pip install requestsuv add requests安装项目依赖
pip install -r requirements.txtuv sync安装所有依赖
pipx run blackuvx black运行一个全局的 Python 工具
poetry add pytest --devuv add pytest --dev添加开发依赖
poetry run python script.pyuv run python script.py在项目环境中运行脚本

总而言之,uv 是管理你项目依赖和环境的核心工具,而 uvx 是你快速、临时运行各种 Python 命令行工具的利器。两者结合,极大地提升了 Python 开发的效率和体验。

Read more

打造你的家庭 AI 助手(四):单 OpenClaw 配置多 Agent、多 QQ、飞书机器人

打造你的家庭 AI 助手(四):单 OpenClaw 配置多 Agent、多 QQ、飞书机器人

打造你的家庭 AI 助手(四):单 OpenClaw 配置多 Agent、多 QQ、飞书机器人 引言 OpenClaw 是一个强大的智能体(Agent)编排框架,它通过统一的架构让开发者可以轻松管理多个聊天机器人,并接入不同的即时通讯平台。在实际应用中,我们往往需要同时运行多个 QQ 机器人(例如个人助手、工作助手),甚至希望同一个智能体既能处理 QQ 消息,也能响应飞书消息。 本文将详细介绍如何在一个 OpenClaw 实例中配置多通道(QQ、飞书)、多 Agent 以及多 QQ 机器人账号,实现资源的高效利用和灵活的消息路由。特别地,我们将阐明飞书通道与 QQ 通道在绑定规则上的差异,避免常见的配置错误。 核心概念回顾 * Agent(智能体):拥有独立人格、记忆和技能的对话单元。每个

By Ne0inhk

OpenClaw基础-3-telegram机器人配置与加入群聊

OpenClaw基础-3-telegram机器人配置与加入群聊 💡 大家好,我是可夫小子,《小白玩转ChatGPT》专栏作者,关注AI编程、AI自动化和自媒体。 Openclaw的优势是接入各种聊天工作,在前面的文章里,已经介绍了如何接入飞书。但之前我也提到了,飞书的最大的问题是请求多的限制,以及无法在非认证企业账号下面组建群聊。但这些限制另一个聊天工具可以打破,那就是Telegram,今天就跟大家分享一下,如果在OpenClaw里面接入Telegram。 第一步:Openclaw端配置 通过命令openclaw config,local→channels→telegrams 这里等待输入API Token,接下来我们去Telegram里面获取 第二步:Telegram端配置 1. 1. 在聊天窗口找到BotFather,打开对话与他私聊 2. 3. 然后再输入一个机器人,再输入一个账号名username,这里面要求以Bot或者Bot结尾,这个是全网的id,要 2. /newbot 来创建一个机器人,输入一个名字name

By Ne0inhk
在 NVIDIA DGX Spark部署 Stable Diffusion 3.5 并使用ComfyUI

在 NVIDIA DGX Spark部署 Stable Diffusion 3.5 并使用ComfyUI

📖 前言 随着 NVIDIA Blackwell 架构的问世,DGX Spark (Personal AI Supercomputer) 将桌面级 AI 算力推向了新的巅峰。这台怪兽级设备搭载了 GB200/GB10 级别的 GPU 和 NVIDIA Grace CPU (ARM64),并运行在最新的 CUDA 13 环境下。 然而,“最强硬件"往往伴随着"最难环境”。由于 Grace CPU 采用 ARM (aarch64) 架构,且 CUDA 13 过于前沿,传统的 PyTorch 安装方法极易失败。 本文将手把手教你如何在这台超级计算机上部署 Stable Diffusion

By Ne0inhk

OpenClaw多智能体路由实战:飞书多机器人配置指南

文章目录 * 飞书重新安装问题 * 批量增加机器人 * 缺点 * 多个飞书机器人名称包含大小写的问题 * 多个Agent名称包含大小写的问题 目前我已经完成了OpenClaw的基本安装,但是在对话框只有一个,机器人也只绑定到主会话,一次只能处理一个消息。很多时候我在聊天窗口,说A任务,然后做了一半,又发了关于B任务的指令。一是每次发完消息,如果OpenClaw还在处理,剩下的消息要么进入队列、要么看不到(实际还在队列)。两个任务切来切去,感觉体验很不好。 要彻底解决这个问题,实现网上演示的那种对各Agent、每个对话机器人对应一个Agent,就需要用到多智能体路由技术。 实现的步骤如下: * 在飞书创建一个新的机器人 * 通过控制台创建新的智能体 * 按照指引将飞书配置上去 * 根据需要创建多个Agent和机器人,并对应配置上去(略) 飞书重新安装问题 明明我已经安装好了飞书,系统还是会提示我安装,否则就跳过了添加飞书这步。应该是系统Bug。这次安装的飞书位置在~/.openclaw/extensions/feishu,其实和~/.npm-globa

By Ne0inhk