No module named ‘crewai’

CrewAI CLI 1.15.6 的测试套件(`tests/test_create_crew.py`)出现 20 个测试失败,核心原因是生成的 `pyproject.toml` 中 `crewai[tools]` 依赖约束被写成了 `>=1.15.6,<2.0.0`,而测试断言期望的版本是 `1.

快速结论: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、显卡、节点等信息,无需在本问题中排查这些项目。

解决步骤

  1. 先确认失败测试的数量是否为 20,并确认是否集中在依赖版本断言相关的用例上。
  2. 检查 `get_crewai_tools_dependency()` 的实现及其返回的版本约束,确认是否由 `1.15.0` 被改为 `>=1.15.6,<2.0.0`。
  3. 等待或跟进 PR #6647(Issue 中说明 “A fix for this is open in #6647 and awaiting review”),按该修复的处理方式合入后再重新运行测试。
  4. 如暂时无法等待合入,可优先尝试在本地按 #6647 的改动方向对齐版本生成逻辑与测试断言,但需注意这属于未在 Issue 中确认的绕过方式。
  5. 重新运行 `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]` 的依赖约束是否与测试预期一致。

参考来源

crewAIInc/crewAI #6643

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 22694

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注