
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 等依赖
解决步骤
-
检查 Docker 镜像状态
- 在终端运行以下命令检查 CodeInterpreterTool 对应的镜像是否构建成功:
docker images | findstr code-interpreter(Windows)或
docker images | grep code-interpreter(Linux/Mac) - 如果镜像显示创建日期异常(例如固定为某旧日期),说明镜像未更新。
- 在终端运行以下命令检查 CodeInterpreterTool 对应的镜像是否构建成功:
-
清除 Docker 缓存并重建镜像
- 删除现有 Docker 镜像和容器,然后重新运行 CrewAI 代码。
- 更彻底的做法:在 Docker Desktop 中执行“清理/清除数据”操作,或使用
docker system prune -a命令。
-
更新 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
- 在 Dockerfile 的 requirements.txt 中明确添加所需包,包括但不限于:
-
尝试不使用自定义 Dockerfile 初始化工具
- 注释掉
user_dockerfile_path参数,让 CodeInterpreterTool 使用默认镜像进行测试:
code_tool = CodeInterpreterTool() # 不传参
- 观察是否仍出现镜像构建失败问题。如果默认镜像正常,说明自定义 Dockerfile 存在配置错误。
- 注释掉
-
独立测试工具
- 不在 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)成功保存。



