跳到主要内容

安装自定义依赖

SkillFlaw 提供了可选依赖组,并支持安装自定义依赖来扩展功能。本指南说明如何在不同 SkillFlaw 安装形态中添加依赖,包括 SkillFlaw Desktop 与 SkillFlaw OSS。

SkillFlaw 代码库使用两个 pyproject.toml 文件管理依赖,一个用于 base,一个用于 main

  • 根目录 pyproject.toml 管理的是 main 包,包含面向最终用户的功能与主应用代码,例如 LangChain 与 OpenAI。
  • src/backend/base/pyproject.toml 管理的是 base 包,包含 FastAPI Web 框架等核心基础设施。

在 SkillFlaw Desktop 中安装自定义依赖

如果要为 SkillFlaw Desktop 添加依赖,需要把对应包写入桌面运行时管理的 requirements.txt 文件。

打包后的桌面运行时独立于源码工作区分发,因此应用数据路径取决于具体打包方式,Python 服务端代码本身不会定义这个路径。 请进入桌面应用自己的托管数据目录,找到它的 requirements.txt,然后直接编辑该文件。

每个依赖都要单独占一行,格式为 DEPENDENCY==VERSION,例如 matplotlib==3.10.0

保存后重启 SkillFlaw Desktop,即可安装这些依赖。

如果你后续需要修改或卸载依赖,继续编辑 requirements.txt,再重启 SkillFlaw Desktop 即可。

在 SkillFlaw OSS 中安装自定义依赖

如果你想在自己的 SkillFlaw 环境里安装自定义依赖,请使用你的包管理器进行添加。

如果你正在 SkillFlaw 源码工作区中工作,推荐使用 uv add,因为项目中已经有可直接引用的 pyproject.toml


_10
uv add DEPENDENCY

安装可选依赖组

SkillFlaw OSS 提供了一些可选依赖组,用于扩展功能。

这些依赖列在 pyproject.toml[project.optional-dependencies] 下。

可以使用 pip 的 [extras] 语法安装。比如要安装 postgresql 依赖组,可以执行:


_10
uv pip install "skillflaw[postgresql]"

如果要一次安装多个 extras,可以用逗号分隔:


_10
uv pip install "skillflaw[local,postgresql]"

使用虚拟环境测试自定义依赖

在本地测试时,建议使用虚拟环境来隔离依赖,避免与其他 Python 项目冲突。

例如,如果你想在 SkillFlaw 中实验 matplotlib


_10
# 创建并激活虚拟环境
_10
uv venv YOUR_SKILLFLAW_VENV
_10
source YOUR_SKILLFLAW_VENV/bin/activate
_10
_10
# 安装 SkillFlaw 与额外依赖
_10
uv pip install skillflaw matplotlib

如果你当前就在 SkillFlaw 源码工作区中工作,也可以直接用 uv add,这样会自动引用现有的 pyproject.toml


_10
uv add matplotlib

uv add 会自动更新对应位置的 uv.lock 文件。

向 SkillFlaw 代码库添加依赖

如果你在给 SkillFlaw 代码库提贡献,也可能需要把依赖正式加入项目中。

SkillFlaw 采用 workspace 结构,并拆成两个包,不同类型依赖要放到不同位置。

如果要给 main 包添加依赖,请在项目根目录执行 uv add DEPENDENCY。 例如:


_10
uv add matplotlib

main 包的依赖可以加到 [project.dependencies],也可以作为可选依赖加到 [project.optional-dependencies]

如果要给 base 包添加依赖,请进入 src/backend/base 后执行:


_10
cd src/backend/base && uv add DEPENDENCY

如果要添加测试、lint 或调试所需的开发依赖,请执行:


_10
cd src/backend/base && uv add --group dev DEPENDENCY

base 包的依赖可以分别加在 [project.dependencies][dependency-groups.dev][project.optional-dependencies] 中。

你也可以用 make add 代替 uv add


_10
# 等价于:uv add matplotlib
_10
make add main="matplotlib"
_10
_10
# 等价于:cd src/backend/base && uv add --group dev matplotlib
_10
make add devel="matplotlib"
_10
_10
# 等价于:cd src/backend/base && uv add matplotlib
_10
make add base="matplotlib"

当然,你也可以手工把依赖写进合适的 pyproject.toml


_10
[project]
_10
dependencies = [
_10
"matplotlib>=3.8.0"
_10
]

或者作为主包的可选依赖:


_10
[project.optional-dependencies]
_10
plotting = [
_10
"matplotlib>=3.8.0",
_10
]

或者作为 base 包的开发依赖:


_10
[dependency-groups]
_10
dev = [
_10
"matplotlib>=3.8.0",
_10
]

另请参阅