如何在Apache Airflow的DAG文件中调用deps目录下的文件?
在Airflow的DAG文件中导入deps目录模块的正确方法
我在Airflow环境里有同级的dags和deps目录,想要在dags下的DAG文件(比如kafka_dag.py、parallel_tasks_dag.py)中使用deps目录内的工具模块,目前尝试了两种方式但没成功,下面是调整后的正确实现方案:
方案一:代码动态添加路径(无需修改配置)
你之前的代码问题在于,已经把deps目录加入了Python路径,却还带着deps前缀导入模块,修改后代码如下:
import sys import os # 将deps目录的绝对路径添加到Python搜索路径 sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../deps'))) # 直接从packages开始导入,无需加deps前缀 from packages.util.utilities import get_data, process_data
方案二:通过airflow.cfg配置全局路径(推荐)
之前的pythonpath配置错了路径层级,应该把包含deps的Airflow根目录加入路径,而不是deps本身:
- 修改
airflow.cfg中的配置:
pythonpath = /home/user1/airflow
- 重启Airflow服务让配置生效
- 之后所有DAG文件可以直接导入,无需额外路径代码:
from deps.packages.util.utilities import get_data, process_data
注意事项
- 确保
deps、packages、util这些目录下都有__init__.py文件(空文件即可),Python才会把它们识别为可导入的包。 - 如果用方案二,修改配置后一定要重启Airflow的webserver和scheduler服务,否则配置不会生效。
内容的提问来源于stack exchange,提问作者Pavithra Naga Yallapu
相关产品推荐
相关产品推荐

