Windows环境下Apache Airflow调用S3Hook报botocore模块缺失错误如何解决
问题根因
报错核心信息:
ModuleNotFoundError: No module named 'botocore'
Airflow的S3Hook属于AWS相关的扩展功能,默认安装Airflow时不会内置AWS SDK依赖,botocore是AWS Python SDK的核心依赖库,缺失就会触发导入失败。
解决方案
1. 安装对应依赖
分不同部署场景操作:
- 本地直接部署的Airflow(非容器化)
直接在Airflow运行的Python环境中执行安装命令:
如果是Airflow 1.x版本:
如果是Airflow 2.x版本,建议安装官方AWS provider包(包含所有AWS相关hook、operator依赖):pip install apache-airflow[s3]
也可以直接安装缺失的依赖:pip install apache-airflow-providers-amazonpip install boto3 botocore - Docker/docker-compose部署的Airflow
不能直接进入容器临时安装(容器重建后依赖会丢失),需要按以下方式配置:- 方案A:在docker-compose.yml的环境变量中添加额外依赖声明
在x-airflow-common的environment块下添加:_PIP_ADDITIONAL_REQUIREMENTS: apache-airflow-providers-amazon boto3 botocore - 方案B:编写自定义Dockerfile,在镜像构建阶段预先安装依赖,再用自定义镜像启动服务。
- 方案A:在docker-compose.yml的环境变量中添加额外依赖声明
2. 修正潜在的拼写错误
从报错栈中可见之前的代码存在大小写错误:from airflow.hooks.S3_hook import S3hook,类名正确写法是首字母大写的S3Hook,你当前贴出的代码已经修正了该问题,确认保持即可。
3. 重启Airflow服务
安装完依赖后必须重启所有Airflow组件:webserver、scheduler、worker,新的依赖才会被加载生效。
4. 验证修复效果
进入Airflow运行的Python环境,依次执行以下命令,无报错即代表修复完成:
import botocore from airflow.hooks.S3_hook import S3Hook
内容的提问来源于stack exchange,提问作者joe8ones
相关产品推荐
相关产品推荐

