ModuleNotFoundError: No module named ‘sklearn’

用户在使用 CrewAI 的 CodeInterpreterTool 执行机器学习预处理任务时,Agent 不实际执行代码,仅返回文本总结。进一步排查发现 Docker 镜像构建异常,容器运行时缺少必要的 Python 库(如 scikit-learn)。

ModuleNotFoundError: No module named 'sklearn'

ModuleNotFoundError: No module named ‘sklearn’

快速结论:这个报错通常发生在 CrewAI 的 CodeInterpreterTool 容器化执行环境中,Python 运行时缺少 scikit-learn 库。优先排查 Dockerfile 中是否正确安装了所需依赖。

问题场景

用户在使用 CrewAI 的 CodeInterpreterTool 执行机器学习预处理任务时,Agent 不实际执行代码,仅返回文本总结。进一步排查发现 Docker 镜像构建异常,容器运行时缺少必要的 Python 库(如 scikit-learn)。

报错原文

Error response from daemon: configured logging driver does not support reading

此外,任务日志中 Agent 未调用工具执行代码,仅返回类似以下文本:

# Agent: Feature Engineering Specialist
## Final Answer: 
My best complete final answer to the task is as follows:
To clean and prepare the dataset `./upsell_train_corrected.csv` for modeling, I will perform the following steps:
...

原因分析

可能原因:

  • CodeInterpreterTool 需要基于 Dockerfile 构建镜像,如果 Docker 镜像因缓存或配置问题未正确更新,容器中会缺少必要的 Python 包。
  • 当工具初始化失败(如 Docker 镜像构建异常)时,Agent 可能退化为仅输出文本而跳过工具调用。
  • Docker 日志驱动配置问题导致容器无法正常启动,进而影响工具执行。

环境排查

  • Python 版本:3.10(用户确认)
  • crewAI 版本:0.108.0
  • crewAI Tools 版本:0.38.1
  • 操作系统:Windows 11
  • Docker:需要确认 Docker Desktop 版本及运行状态
  • Dockerfile 内容:用户提供的 Dockerfile 中未包含 scikit-learn、imbalanced-learn 等依赖

解决步骤

  1. 检查 Docker 镜像状态

    • 在终端运行以下命令检查 CodeInterpreterTool 对应的镜像是否构建成功:
      docker images | findstr code-interpreter(Windows)或
      docker images | grep code-interpreter(Linux/Mac)
    • 如果镜像显示创建日期异常(例如固定为某旧日期),说明镜像未更新。
  2. 清除 Docker 缓存并重建镜像

    • 删除现有 Docker 镜像和容器,然后重新运行 CrewAI 代码。
    • 更彻底的做法:在 Docker Desktop 中执行“清理/清除数据”操作,或使用 docker system prune -a 命令。
  3. 更新 Dockerfile 依赖

    • 在 Dockerfile 的 requirements.txt 中明确添加所需包,包括但不限于:
      pandas, numpy, scikit-learn, imbalanced-learn
    • 示例 requirements.txt:
      pandas==2.0.3
      numpy==1.24.3
      scikit-learn==1.3.0
      imbalanced-learn==0.11.0
      
  4. 尝试不使用自定义 Dockerfile 初始化工具

    • 注释掉 user_dockerfile_path 参数,让 CodeInterpreterTool 使用默认镜像进行测试:

      code_tool = CodeInterpreterTool() # 不传参
    • 观察是否仍出现镜像构建失败问题。如果默认镜像正常,说明自定义 Dockerfile 存在配置错误。
  5. 独立测试工具

    • 不在 Crew 上下文中,直接单独初始化并调用 CodeInterpreterTool,排查问题是否出在工具本身而非 Agent/Task 交互。

验证方法

  • 确认在运行 Crew 后,Docker Desktop 中出现 code-interpreter 镜像且创建时间为当前时间。
  • 确认容器日志不再出现“logging driver does not support reading”错误。
  • 确认 Agent 最终输出中包含 Used Code Interpreter Tool (1),而非纯文本总结。
  • 确认生成的 CSV 文件(X_train.csv, X_test.csv, y_train.csv, y_test.csv)成功保存。

参考来源

crewAIInc/crewAI #2574

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 11359

发表回复

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