Airflow无法识别本地config目录 报ModuleNotFoundError模块不存在错误
报错原因
- Python导入模块时仅会搜索
sys.path配置的路径列表,Airflow默认仅将dags、plugins等预设目录加入搜索路径,你存放于my_project根目录的config目录不在搜索范围内,因此无法识别为可导入的包 - 若
config目录下未添加空的__init__.py文件,Python也无法将该目录识别为合法的包,同样会触发模块不存在报错
解决方案
你可以任选以下任一方案处理:
- 方案1:调整目录结构
将config目录整体移动到dags目录下,同时在config目录内新增空的__init__.py文件,原有导入语句无需修改,重启Airflow服务即可生效 - 方案2:修改Airflow全局Python搜索路径
打开Airflow配置文件airflow.cfg,找到python_path配置项,添加你的my_project根目录绝对路径:python_path = /你的实际路径/my_project
配置修改完成后,重启Airflow的webserver和scheduler服务即可 - 方案3:DAG文件内临时新增搜索路径
在报错的airflow_foo.py文件最开头,所有导入语句之前添加以下代码:
该方案无需修改全局配置,仅对当前DAG文件生效import sys sys.path.append("/你的实际路径/my_project")
注意:所有配置修改后都需要重启Airflow webserver和scheduler服务,刷新仪表盘即可确认报错是否解决
内容的提问来源于stack exchange,提问作者igx
相关产品推荐
相关产品推荐

