一个单纯的项目工作记录
之前一直用DB-GPT来做项目的RAG,但最近重启后发现BYD怎么都用不了,一看居然大更新。
在最新的7.0的版本中,他们不再使用pip来进行包的管理,而是使用uv
这个uv挺有意思,就先介绍一下:
uv 的核心特点和作用:
-
速度极快:相比
pip,uv采用 Rust 语言编写核心逻辑,依赖解析和安装速度提升 10-100 倍(官方数据),尤其在大型项目(如 DB-GPT 这类依赖复杂的项目)中优势明显。 -
功能全面:集成了包管理(安装、卸载、升级)、虚拟环境管理、依赖锁文件生成(类似
pip freeze但更严谨)、工作区(workspace)支持等功能,一站式解决 Python 项目的依赖问题。 -
严格的依赖管理:自动生成
uv.lock锁文件,精确记录所有依赖的版本和来源,确保不同环境下安装的依赖完全一致(避免pip中常见的 “本地能跑,线上报错” 问题)。 -
支持工作区(workspace):对于多包项目(如 DB-GPT 可能包含多个子模块 / 插件),
uv支持通过pyproject.toml中的tool.uv.workspace配置管理整个项目的依赖,统一安装 / 更新所有子包的依赖,这也是 DB-GPT 中重点使用的功能(代码中extract_workspace_extras函数就是基于此解析项目结构)。
在 DB-GPT 中的具体应用:
- 代码中频繁出现的
uv sync命令:用于根据pyproject.toml和uv.lock同步依赖(安装缺失的依赖,移除不需要的依赖),类似pip install -r requirements.txt但更智能。 --extra参数:uv支持通过--extra指定安装 “可选依赖”(即pyproject.toml中的optional-dependencies),DB-GPT 中各种功能模块(如 RAG、代理模型、存储引擎)的依赖就是通过这种方式管理的。- 工作区配置:通过
tool.uv.workspace定义项目的子模块(members)和排除项(exclude),uv会自动识别并管理整个项目的依赖关系,无需手动维护多个requirements.txt。
而这样就导致了我们的启动方式的改变:
在原本的使用中,我们直接python dbgpt/server/run.py,就开始启动服务
但在现在中,他提供了以下两个方法:1.uv run dbgpt start webserver --config configs/dbgpt-proxy-openai.toml
2.uv run python packages/dbgpt-app/src/dbgpt_app/dbgpt_server.py --config configs/dbgpt-proxy-openai.toml
注意:uv的下载出问题的情况下,可以通过pip下载:python -m pip install --upgrade pip
python -m pip install --upgrade pipx
python -m pipx ensurepath
pipx install uv --global
纯cpu有概率跑不起来,看到说装上cpu版本的pytorch能解决
目前7.0快速开启文档如下: 快速开始_V0.7.0