标题: [合规] MIT 项目直接依赖 GPL-2.0 的 python-igraph,存在许可证兼容性风险
正文:
问题
本项目根目录 LICENSE 声明为 MIT,但 backend/package/pyproject.toml 的 dependencies 中直接依赖了 igraph>=0.11.8。python-igraph 的许可证是 GPL-2.0。
GPL-2.0 具有强传染性:分发包含 GPL 代码的衍生作品时,整个作品须以 GPL-2.0 提供源代码。当 MIT 代码链接/分发 GPL-2.0 库时,作品的发行状态实际上受 GPL-2.0 约束,与项目声明的 MIT 许可矛盾。这对下游商业/企业内部使用者构成实质的法律风险。
使用位置
igraph 仅在一处使用:
backend/package/yuxi/knowledge/graphs/milvus_graph_service.py:918 rank_chunks_by_ppr() — 用 igraph 对知识图谱子图做 Personalized PageRank 排名。
且该处是 try/except ImportError 的可选导入——igGraph 缺失时仅 logger.error 并返回空列表,不会中断流程。
建议
- 优先:替换为已依赖的
networkx(BSD-3-Clause) 实现 Personalized PageRank(networkx.pagerank 原生支持 personalization 参数),可完全移除 igraph 依赖;
- 或购买 igraph 的商业许可;
- 或与法务/社区确认后明确调整项目许可证策略。
附带问题
igraph 在代码中是可选导入(懒加载),却被声明为硬依赖,导致 pip install yuxi 强制安装一个带 GPL 传染风险且实际非必需的包。无论替换与否,建议将其移入 optional-dependencies 或移除。
标题: [合规] MIT 项目直接依赖 GPL-2.0 的 python-igraph,存在许可证兼容性风险
正文:
问题
本项目根目录 LICENSE 声明为 MIT,但
backend/package/pyproject.toml的dependencies中直接依赖了igraph>=0.11.8。python-igraph的许可证是 GPL-2.0。GPL-2.0 具有强传染性:分发包含 GPL 代码的衍生作品时,整个作品须以 GPL-2.0 提供源代码。当 MIT 代码链接/分发 GPL-2.0 库时,作品的发行状态实际上受 GPL-2.0 约束,与项目声明的 MIT 许可矛盾。这对下游商业/企业内部使用者构成实质的法律风险。
使用位置
igraph仅在一处使用:backend/package/yuxi/knowledge/graphs/milvus_graph_service.py:918rank_chunks_by_ppr()— 用 igraph 对知识图谱子图做 Personalized PageRank 排名。且该处是
try/except ImportError的可选导入——igGraph 缺失时仅logger.error并返回空列表,不会中断流程。建议
networkx(BSD-3-Clause) 实现 Personalized PageRank(networkx.pagerank原生支持personalization参数),可完全移除 igraph 依赖;附带问题
igraph在代码中是可选导入(懒加载),却被声明为硬依赖,导致pip install yuxi强制安装一个带 GPL 传染风险且实际非必需的包。无论替换与否,建议将其移入optional-dependencies或移除。