快速结论:CrewAI CLI 1.15.6 的测试套件(`tests/test_create_crew.py`)出现 20 个测试失败,核心原因是生成的 `pyproject.toml` 中 `crewai[tools]` 依赖约束被写成了 `>=1.15.6,<2.0.0`,而测试断言期望的版本是 `1.15.0`,因此 `assert Version("1.15.0") in Requirement(dependency).specifier` 失败。这不是 `No module named 'crewai'` 这类导入错误,而是版本约束断言不匹配。
适用环境:Issue 中确认的环境为 Python 3.12(路径 `/usr/ports/misc/py-crewai-cli/work-py312/crewai_cli-1.15.6/`),工具为 CrewAI CLI 1.15.6,依赖 `crewai[tools]`。Issue 未确认操作系统、CUDA、显卡等其他环境信息。
最快修复方案:暂无确认的一步修复方案。Issue 中维护者表示 “A fix for this is open in #6647 and awaiting review”,并补充 “I thnk we have fixed it already”,说明修复仍在审核/合入流程中,尚未明确给出可执行的单步命令。
注意事项:不要手动把测试中的 `Version(“1.15.0”)` 改成 `1.15.6` 来“修复”测试,这会掩盖真实的版本约束不一致问题;应先等待 #6647 合入或按该 PR 的方式处理。另外,Issue 评论中关于 control-plane reliability 的回复与本次测试失败无关,属于无关讨论,不应作为排查依据。
问题场景
用户在运行 CrewAI CLI(crewai-cli 1.15.6)的测试套件时出现失败。具体触发点是 `tests/test_create_crew.py` 中的 `test_json_create_provider_preselects_default_model`,该测试调用 `json_crew.create_json_crew(…)` 生成一个 JSON crew 项目,随后读取生成的 `pyproject.toml`,取出 `project.dependencies[0]`,并断言其中包含 `Version(“1.15.0”)`。
报错原文
_________________________________________________________________________ test_json_create_provider_preselects_default_model _________________________________________________________________________
tmp_path = PosixPath('/tmp/pytest-of-yuri/pytest-784/test_json_create_provider_pres0'), monkeypatch =
def test_json_create_provider_preselects_default_model(tmp_path, monkeypatch):
...
dependency = pyproject["project"]["dependencies"][0]
assert dependency == get_crewai_tools_dependency()
> assert Version("1.15.0") in Requirement(dependency).specifier
E AssertionError: assert in <SpecifierSet('=1.15.6')>
E + where = Version('1.15.0')
E + and <SpecifierSet('=1.15.6')> = <Requirement('crewai[tools]=1.15.6')>.specifier
E + where <Requirement('crewai[tools]=1.15.6')> = Requirement('crewai[tools]>=1.15.6,<2.0.0')
/usr/ports/misc/py-crewai-cli/work-py312/crewai_cli-1.15.6/tests/test_create_crew.py:765: AssertionError
原因分析
最可能的原因是测试断言与代码生成的依赖约束不同步。测试期望生成的 `crewai[tools]` 依赖约束包含版本 `1.15.0`,但实际生成的是 `crewai[tools]>=1.15.6,<2.0.0`,其 `SpecifierSet` 为 `=1.15.6`,不包含 `1.15.0`,因此断言失败。由于该 Issue 标题指出“20 tests fail”,可能是一批测试共用了同一个 `get_crewai_tools_dependency()` 或类似的版本约束生成逻辑,导致多处断言同时失败,而非单个测试的孤立问题。Issue 中未给出代码修复的具体实现细节,因此以上为基于报错和测试代码的推断。
环境排查
- 确认 crewai-cli 版本是否为 1.15.6(报错路径中体现)。
- 确认 Python 版本是否为 3.12(报错路径 `work-py312` 中体现)。
- 确认测试是否运行在 `tests/test_create_crew.py` 对应位置,以及是否存在本地改动覆盖了依赖版本生成逻辑。
- 检查 `get_crewai_tools_dependency()` 返回的版本范围是否与测试预期一致。
- Issue 未确认 CUDA、PyTorch、显卡、节点等信息,无需在本问题中排查这些项目。
解决步骤
- 先确认失败测试的数量是否为 20,并确认是否集中在依赖版本断言相关的用例上。
- 检查 `get_crewai_tools_dependency()` 的实现及其返回的版本约束,确认是否由 `1.15.0` 被改为 `>=1.15.6,<2.0.0`。
- 等待或跟进 PR #6647(Issue 中说明 “A fix for this is open in #6647 and awaiting review”),按该修复的处理方式合入后再重新运行测试。
- 如暂时无法等待合入,可优先尝试在本地按 #6647 的改动方向对齐版本生成逻辑与测试断言,但需注意这属于未在 Issue 中确认的绕过方式。
- 重新运行 `tests/test_create_crew.py`,确认 `test_json_create_provider_preselects_default_model` 等用例不再抛出 `AssertionError`。
验证方法
重新执行 crewai-cli 的测试套件,确认原本失败的 20 个测试用例全部通过,尤其是 `test_json_create_provider_preselects_default_model` 不再出现 AssertionError: assert <Version('1.15.0')> in <SpecifierSet('<2.0.0,>=1.15.6')>。同时可检查生成的 `pyproject.toml` 中 `crewai[tools]` 的依赖约束是否与测试预期一致。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[BUG] Task output schema in the prompt marks Optional fields as required and strips null, so the model cannot express "not applicable"](https://www.chat-gpts.plus/wp-content/uploads/2026/09/6774-15a8d678-768x403.jpg)

