Airflow同目录DAG导入Python脚本报错,求直接导入解决方案
Airflow同目录Python脚本导入问题
问题场景
- DAG文件与业务Python脚本处于同一目录,但Airflow运行时触发导入错误,无法识别同目录脚本。
- 已通过创建
commonsPython包(setup.py代码如下)临时解决问题,但希望实现无需打包直接导入同目录脚本的方案,目前已找到可行方法。
from setuptools import setup, find_packages setup(name='commons', version='0.0.6', author='Alexander Brezhnev', author_email='brezhnev.aleksandr@gmail.com', packages=find_packages())
直接导入同目录脚本的可行方案
方案:手动将当前目录添加至Python路径
在DAG文件的最开头加入以下代码,将DAG所在目录注入Python的模块搜索路径,之后即可直接导入同目录下的脚本:
import sys from pathlib import Path # 获取当前DAG文件的所在目录 current_dir = Path(__file__).resolve().parent # 将目录添加到Python搜索路径 sys.path.append(str(current_dir)) # 导入同目录下的目标脚本(替换为你的脚本名) import your_script
原理说明
Airflow的调度器在加载DAG时,默认的Python路径不包含DAG文件所在的目录,导致同目录脚本无法被识别。通过手动添加路径,可以让Python解释器找到同目录下的模块。
内容的提问来源于stack exchange,提问作者Ragnarok-039
相关产品推荐
相关产品推荐

