Airflow v2.9升级报错:找不到airflow.providers.microsoft模块
解决Airflow 2.9升级后
ModuleNotFoundError: No module named 'airflow.providers.microsoft'问题 核心原因
Airflow 2.3+版本对Microsoft Azure Provider的模块结构做了调整,旧版本中airflow.providers.microsoft.azure.log.wasb_task_handler.WasbTaskHandler的路径已废弃,同时provider包的版本兼容性要求更严格,直接安装旧版本provider会导致路径不匹配。
具体解决步骤
修正配置文件中的日志处理器路径
打开airflow.cfg,找到remote_task_log_handler配置项,将旧路径:remote_task_log_handler = airflow.providers.microsoft.azure.log.wasb_task_handler.WasbTaskHandler修改为新版本的正确路径:
remote_task_log_handler = airflow.providers.microsoft.azure.log.wasb.WasbTaskHandler同时检查所有引用旧模块路径的配置(如自定义插件、DAG文件),统一替换为新路径。
安装适配Airflow 2.9的Microsoft Azure Provider版本
Airflow 2.9要求apache-airflow-providers-microsoft-azure版本至少为8.0.0(推荐安装最新兼容版本)。如果是自定义Docker镜像,在Dockerfile中添加:RUN pip install apache-airflow-providers-microsoft-azure>=8.0.0若使用官方Airflow镜像启动容器,可通过命令临时安装(建议写入Dockerfile以持久化):
docker exec -it <airflow-container-name> pip install apache-airflow-providers-microsoft-azure>=8.0.0验证Provider安装与路径有效性
进入Airflow容器,执行以下命令验证:- 确认provider版本:
pip list | grep apache-airflow-providers-microsoft-azure - 验证模块导入是否正常:
若输出"导入成功",说明路径和安装都没问题。python -c "from airflow.providers.microsoft.azure.log.wasb import WasbTaskHandler; print('导入成功')"
- 确认provider版本:
清理缓存并重启服务
删除容器内的Python编译缓存(避免旧路径残留):find /opt/airflow -name "*.pyc" -delete然后重启Airflow所有服务:
docker-compose restart airflow-webserver airflow-scheduler airflow-worker
内容的提问来源于stack exchange,提问作者Abe Brandsma
相关产品推荐
相关产品推荐

