Skip to content

[解决方案] AstrBot 插件依赖安装失败:uv 工具缺失问题 #7412

@yaohewoma

Description

@yaohewoma

AstrBot 插件依赖安装失败:uv 工具缺失问题解决方案

📋 问题描述

在特定 Windows 环境下,安装 AstrBot 插件时出现依赖安装失败,错误码为 2。此问题与 AstrBot 核心代码无关,而是由于特定环境配置导致 AstrBot 尝试使用 uv 工具安装依赖,但系统中缺少 uv 可执行文件。

典型错误日志

[INFO] Upgrading pip using index: `https://mirrors.aliyun.com/pypi/simple`
[INFO] Installing uv using index: `https://mirrors.aliyun.com/pypi/simple`
[INFO] Installing requirements using index: `https://mirrors.aliyun.com/pypi/simple`
D:\AstrBot\venv\Scripts\python.exe: No module named uv
[WARN] requirements install failed with `https://mirrors.aliyun.com/pypi/simple.`
Retrying with `https://pypi.org/simple...`
D:\AstrBot\venv\Scripts\python.exe: No module named uv
[ERROR] Failed to install dependencies from requirements.txt.

uv._find_uv.UvNotFound: Could not find the uv binary in any of the following locations:
 - D:\AstrBot\venv\Scripts
 - C:\Users\Administrator\AppData\Local\Programs\Python\Python310\Scripts
 - D:\AstrBot\venv\lib\site-packages\bin
 - C:\Users\Administrator\AppData\Roaming\Python\Python310\Scripts

影响范围

  • 操作系统: Windows 10/11
  • AstrBot 版本: v4.22.3+(特定环境)
  • Python 版本: 3.10+
  • 触发场景: 安装插件时自动安装依赖

🔍 问题原因分析

重要说明

此问题与 AstrBot 核心代码无关。AstrBot 核心代码使用的是标准 pip 进行依赖管理(详见 astrbot/core/utils/pip_installer.py)。

根本原因

在特定 Windows 环境下,AstrBot 会尝试使用 uv 工具来安装插件依赖,而不是使用标准的 pip。这可能是由于:

  1. Python 环境被全局修改 - 系统中的 Python 配置或 pip 配置被其他工具修改
  2. 环境变量配置 - 存在影响 pip 行为的环境变量
  3. 虚拟环境被污染 - venv 中的 pip 被替换或配置被修改
  4. 系统级 Python 钩子 - Windows 系统中存在全局的 Python 启动钩子

为什么需要 uv

uv 是一个高性能的 Python 包管理工具,AstrBot 在特定环境下会尝试使用它来加速依赖安装。但 uv 包含两部分:

  • Python 模块 - 通过 pip install uv 安装
  • 可执行文件 (uv.exe) - 需要单独安装

仅安装 Python 模块是不够的,必须同时有可执行文件。


✅ 解决方案

方案一:使用 WinGet 安装 uv(推荐 ⭐)

WinGet 是 Windows 自带的包管理器,可以自动安装 uv 并配置环境变量。

步骤 1:安装 uv

以管理员身份打开 PowerShell 或 CMD,执行:

winget install --id=astral-sh.uv -e

安装成功输出示例

Found uv [astral-sh.uv] Version 0.11.3
Successfully installed
Path environment variable modified; restart your shell to use the new value.
Command line alias added: "uvx"
Command line alias added: "uv"
Command line alias added: "uvw"

步骤 2:查找 uv 安装位置

where uv

典型输出

C:\uv\uv.exe
C:\Users\Administrator\AppData\Local\Microsoft\WinGet\Packages\astral-sh.uv_Microsoft.Winget.Source_8wekyb3d8bbwe\uv.exe

步骤 3:复制 uv.exe 到 AstrBot 虚拟环境

copy "C:\uv\uv.exe" "D:\AstrBot\venv\Scripts\"
copy "C:\uv\uvx.exe" "D:\AstrBot\venv\Scripts\"

注意:请根据你的实际安装路径修改命令中的路径。

步骤 4:重启 AstrBot

关闭并重新启动 AstrBot,插件依赖安装应该能正常工作了。


方案二:手动下载 uv 可执行文件

如果 WinGet 无法使用,可以手动下载 uv。

步骤 1:下载 uv

访问 uv 的 GitHub Releases 页面:
https://github.com/astral-sh/uv/releases

下载对应系统的版本:

  • Windows x64: uv-x86_64-pc-windows-msvc.zip
  • Windows ARM64: uv-aarch64-pc-windows-msvc.zip

步骤 2:解压并复制

解压下载的 zip 文件,将 uv.exeuvx.exe 复制到 AstrBot 的虚拟环境 Scripts 目录:

D:\AstrBot\venv\Scripts\

步骤 3:重启 AstrBot


方案三:使用 PowerShell 脚本安装 uv

# 安装 uv 到系统
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

# 找到安装位置
where uv

# 复制到虚拟环境
copy "%USERPROFILE%\.local\bin\uv.exe" "D:\AstrBot\venv\Scripts\"
copy "%USERPROFILE%\.local\bin\uvx.exe" "D:\AstrBot\venv\Scripts\"

🔧 验证安装

检查 uv 是否正确安装

# 检查系统 uv
uv --version

# 检查虚拟环境 uv
D:\AstrBot\venv\Scripts\uv.exe --version

成功输出示例

uv 0.11.3

测试插件安装

重启 AstrBot 后,尝试安装一个插件,观察是否还会出现依赖安装失败的错误。


❓ 常见问题 FAQ

Q1: 这是 AstrBot 的 bug 吗?

A: 不是。AstrBot 核心代码使用的是标准 pip(详见 astrbot/core/utils/pip_installer.py)。此问题是由特定 Windows 环境配置导致的,AstrBot 在这些环境下会尝试使用 uv 而不是 pip。

Q2: 为什么 pip install uv 不够?

A: pip install uv 只安装了 Python 模块,但 AstrBot 需要调用 uv.exe 可执行文件。必须通过 WinGet、官方安装脚本或手动下载获取可执行文件。

Q3: 复制 uv.exe 后仍然报错?

A: 请检查:

  1. 是否同时复制了 uvx.exe
  2. 是否复制到了正确的虚拟环境目录(venv\Scripts\
  3. 是否重启了 AstrBot
  4. 复制的 uv.exe 是否与系统架构匹配(x64/ARM64)

Q4: 如何找到我的 AstrBot 虚拟环境路径?

A: 默认路径通常在 AstrBot 安装目录下:

D:\AstrBot\venv\Scripts\

或在启动 AstrBot 时查看日志中的 Python 路径。

Q5: Linux/Mac 系统会遇到此问题吗?

A: 此问题主要出现在特定 Windows 环境下。Linux/Mac 用户通常不会遇到此问题。如果遇到,可以使用以下命令安装 uv:

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

Q6: 如何确认 AstrBot 使用的是哪个包管理器?

A: 查看 AstrBot 启动日志,搜索 pipuv 相关日志。正常情况下 AstrBot 使用 pip,但在特定环境下会尝试使用 uv。

Q7: 有没有办法让 AstrBot 不使用 uv?

A: 此问题是由环境配置导致的,不是 AstrBot 的可配置选项。如果希望 AstrBot 使用标准 pip,建议检查并清理 Python 环境配置,找出导致 AstrBot 尝试使用 uv 的原因。


🔍 环境检查建议

如果希望找出根本原因,建议检查以下内容:

1. 检查 pip 配置

pip config list

2. 检查环境变量

Get-ChildItem Env: | Where-Object { $_.Name -like "*PIP*" -or $_.Name -like "*PYTHON*" }

3. 检查虚拟环境

# 查看 venv 中的 pip
D:\AstrBot\venv\Scripts\pip.exe --version

# 查看 venv 配置文件
Get-Content D:\AstrBot\venv\pyvenv.cfg

4. 检查全局 Python 配置

检查以下位置是否有异常配置:

  • %APPDATA%\pip\pip.ini
  • %LOCALAPPDATA%\pip\pip.ini
  • C:\ProgramData\pip\pip.ini

📊 环境信息

测试环境

操作系统:

  • 版本:Windows 11 专业版
  • 版本号:25H2
  • 操作系统版本:26200.8037
  • 安装日期:2026/3/12
  • 系统类型:64 位操作系统,基于 x64 的处理器

硬件配置:

  • 处理器:AMD Ryzen 7 5700X 8-Core Processor (3.40 GHz)
  • 内存:16.0 GB
  • 设备名称:台式机

软件环境:

  • AstrBot 版本: v4.22.3+
  • Python 版本: 3.10+
  • uv 版本: 0.11.3+ (推荐最新版)
  • 问题类型: 环境特定问题,非 AstrBot 核心代码问题

适用范围

  • 操作系统: Windows 10/11 (x64/ARM64)
  • 触发条件: 特定 Windows 环境下,使用 Launcher 或旧版安装器部署 AstrBot

🔗 参考链接


📝 总结

问题本质

在特定 Windows 环境下,AstrBot 会尝试使用 uv 作为包管理器,但虚拟环境中缺少 uv 的可执行文件(uv.exe),导致插件依赖安装失败。

解决核心

  1. 安装 uv 到系统(WinGet/手动/脚本)
  2. 找到 uv.exe 位置
  3. 复制 uv.exe 到 AstrBot 虚拟环境
  4. 重启 AstrBot

推荐方案

WinGet 安装是最简单可靠的方式,自动处理环境变量和路径配置。

重要提醒

此问题与 AstrBot 核心代码无关,而是由特定环境配置导致。如果希望找出根本原因,建议检查 Python 环境配置。


📚 附录:问题排查全过程记录

背景

此问题最初出现在一位用户的 Windows 电脑上,表现为使用 Launcher 或旧版 Windows 安装器部署 AstrBot 时,插件依赖安装都会失败,错误码为 2。(注:桌面端不受此 uv 问题影响)

排查过程

第一阶段:初步分析错误日志

观察到的现象:

  • 安装插件时出现 ModuleNotFoundError: No module named 'uv'
  • 日志显示 [INFO] Installing uv using index: ...
  • 错误码 2,表示依赖安装失败

初步判断:

  • AstrBot 尝试使用 uv 安装依赖
  • 但系统中缺少 uv 的可执行文件

第二阶段:尝试安装 uv

尝试 1:使用 pip 安装 uv

pip install uv

结果: 失败

  • pip 安装的 uv 只有 Python 模块
  • 缺少 uv.exe 可执行文件
  • AstrBot 仍然报错 No module named 'uv'

发现:

  • pip install uv 安装的包位于 D:\Python\Lib\site-packages\uv
  • 但 AstrBot 虚拟环境在 D:\AstrBot\venv\
  • 虚拟环境中没有 uv.exe

第三阶段:手动复制 uv 到虚拟环境

尝试 2:复制 uv 模块到虚拟环境

xcopy "D:\Python\Lib\site-packages\uv" ".\venv\Lib\site-packages\uv" /E /I

结果: 部分成功

  • uv 模块复制成功
  • 但 AstrBot 报错 uv._find_uv.UvNotFound
  • 仍然缺少 uv.exe 可执行文件

关键发现:

  • uv 包含两部分:Python 模块 + 可执行文件
  • 仅复制模块不够,必须有 uv.exe

第四阶段:安装 uv 可执行文件

尝试 3:使用 WinGet 安装 uv

winget install --id=astral-sh.uv -e

结果: 成功安装 uv 到系统

  • 安装位置:C:\uv\uv.exe
  • 同时安装了 uvx.exe

尝试 4:复制 uv.exe 到虚拟环境

copy "C:\uv\uv.exe" "D:\AstrBot\venv\Scripts\"
copy "C:\uv\uvx.exe" "D:\AstrBot\venv\Scripts\"

结果: 成功!

  • AstrBot 插件安装正常
  • 依赖安装不再报错

第五阶段:深入分析根本原因

疑问: 为什么 AstrBot 会尝试使用 uv?

调查 1:检查 AstrBot 核心代码

  • 查看 astrbot/core/utils/pip_installer.py
  • 发现 AstrBot 核心代码使用的是标准 pip
  • 没有使用 uv 的逻辑

调查 2:检查 requirements.txt

  • AstrBot 核心依赖中没有 uv
  • 说明 uv 不是 AstrBot 的必需依赖

调查 3:检查启动脚本

  • 查看 main.pyruntime_bootstrap.py
  • 没有发现自动安装 uv 的逻辑

关键发现:

  • AstrBot 核心代码确实只使用 pip
  • 但特定环境下会尝试使用 uv
  • 这是环境特定问题,不是代码问题

第六阶段:确认问题范围

测试: 在多个 AstrBot 部署方式上测试

方式 1:AstrBot Launcher(启动器)

  • 问题: 启动时即报错,无法正常运行
  • 错误: [INFO] Installing uv...No module named uv
  • 原因: 启动器尝试使用 uv 安装依赖,但缺少 uv.exe

方式 2:旧版 Windows 安装器(PowerShell 脚本)- 最终使用的方案

  • 问题: 启动时即报错,无法正常运行
  • 错误: 同启动器,缺少 uv.exe
  • 注意: 旧版 Windows 安装器已被官方标记为"不推荐",但在某些环境下可能是唯一可行的方案

方式 3:AstrBot 桌面端(Desktop)

  • 启动: 正常,可以正常运行
  • 问题: 安装插件时报错
  • 错误: 插件依赖安装失败: 安装失败,错误码:2failed to set global default subscriber
  • 原因: 插件依赖冲突(与 uv 无关,是另一个问题)
  • 结论: 桌面端不受 uv 问题影响,但可能有其他插件安装问题

结论:

  • 问题与特定 AstrBot 部署方式有关(Launcher 和旧版安装器受影响,桌面端不受影响)
  • 问题与特定 Windows 环境有关
  • 可能是 Python 环境配置、环境变量、或系统级钩子导致

关键发现总结

  1. AstrBot 核心代码使用 pip

    • 代码位置:astrbot/core/utils/pip_installer.py
    • 依赖文件:requirements.txt 中没有 uv
  2. 特定环境会触发 uv 使用

    • 原因尚不明确
    • 可能是环境变量、pip 配置、或系统级修改
  3. 解决方案有效

    • 安装 uv 并复制到虚拟环境可以解决问题
    • 这是绕过方案,不是根本解决方案
  4. 问题性质

    • 环境特定问题
    • 不是 AstrBot 的 bug
    • 但可能影响其他用户

版本缺陷记录

受影响版本:

  • AstrBot v4.22.3+
  • 测试过的部署方式:
    • AstrBot Launcher(启动器)v0.2.1+ - 受影响(启动时即报错)
    • 旧版 Windows 安装器(PowerShell 脚本)0.3.0 - 受影响(启动时即报错)
    • AstrBot 桌面端(Desktop)v4.22.2+ - 不受 uv 问题影响(启动正常,但可能有其他插件安装问题)

缺陷描述:
在特定 Windows 环境下,AstrBot 会尝试使用 uv 工具安装插件依赖,但:

  1. 系统中可能没有安装 uv
  2. 或 uv 安装不完整(缺少 uv.exe 可执行文件)
  3. 导致插件依赖安装失败,错误码 2

缺陷影响:

  • 无法正常安装插件
  • 插件依赖无法自动安装
  • 影响用户体验

临时解决方案:

  • 手动安装 uv 并复制到 AstrBot 虚拟环境(详见上文解决方案)

建议修复:

  • AstrBot 应该检测 uv 是否存在,如果不存在则回退到使用 pip
  • 或在文档中明确说明需要手动安装 uv
  • 或在安装过程中自动安装完整的 uv(包括 uv.exe)

建议的后续行动

对于用户:

  • 使用本文档的解决方案安装 uv
  • 或检查 Python 环境配置找出根本原因

对于 AstrBot 开发者:

  • 考虑检测 uv 是否存在,提供 fallback 到 pip 的机制
  • 或在文档中说明可能需要手动安装 uv

对于社区:

  • 收集更多案例,找出触发此问题的具体环境条件
  • 完善解决方案文档

希望这个解决方案能帮助到遇到同样问题的朋友!如有疑问或更好的方案,欢迎在评论区讨论。

最后更新时间:2026-04-08

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions