安装自定义依赖
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:
_10uv add DEPENDENCY
安装可选依赖组
SkillFlaw OSS 提供了一些可选依赖组,用于扩展功能。
这些依赖列在 pyproject.toml 的 [project.optional-dependencies] 下。
可以使用 pip 的 [extras] 语法安装。比如要安装 postgresql 依赖组,可以执行:
_10uv pip install "skillflaw[postgresql]"
如果要一次安装多个 extras,可以用逗号分隔:
_10uv pip install "skillflaw[local,postgresql]"
使用虚拟环境测试自定义依赖
在本地测试时,建议使用虚拟环境来隔离依赖,避免与其他 Python 项目冲突。
例如,如果你想在 SkillFlaw 中实验 matplotlib:
_10# 创建并激活虚拟环境_10uv venv YOUR_SKILLFLAW_VENV_10source YOUR_SKILLFLAW_VENV/bin/activate_10_10# 安装 SkillFlaw 与额外依赖_10uv pip install skillflaw matplotlib
如果你当前就在 SkillFlaw 源码工作区中工作,也可以直接用 uv add,这样会自动引用现有的 pyproject.toml:
_10uv add matplotlib
uv add 会自动更新对应位置的 uv.lock 文件。
向 SkillFlaw 代码库添加依赖
如果你在给 SkillFlaw 代码库提贡献,也可能需要把依赖正式加入项目中。
SkillFlaw 采用 workspace 结构,并拆成两个包,不同类型依赖要放到不同位置。
如果要给 main 包添加依赖,请在项目根目录执行 uv add DEPENDENCY。
例如:
_10uv add matplotlib
main 包的依赖可以加到 [project.dependencies],也可以作为可选依赖加到 [project.optional-dependencies]。
如果要给 base 包添加依赖,请进入 src/backend/base 后执行:
_10cd src/backend/base && uv add DEPENDENCY
如果要添加测试、lint 或调试所需的开发依赖,请执行:
_10cd 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_10make add main="matplotlib"_10_10# 等价于:cd src/backend/base && uv add --group dev matplotlib_10make add devel="matplotlib"_10_10# 等价于:cd src/backend/base && uv add matplotlib_10make add base="matplotlib"
当然,你也可以手工把依赖写进合适的 pyproject.toml:
_10[project]_10dependencies = [_10 "matplotlib>=3.8.0"_10]
或者作为主包的可选依赖:
_10[project.optional-dependencies]_10plotting = [_10 "matplotlib>=3.8.0",_10]
或者作为 base 包的开发依赖:
_10[dependency-groups]_10dev = [_10 "matplotlib>=3.8.0",_10]