ADF托管Airflow遇ModuleNotFoundError:scripts模块无法找到
问题分析与解决方案
核心原因
在ADF托管的Airflow环境中,默认PYTHONPATH并未将airflow/dags目录作为根模块路径,导致你使用绝对导入from scripts.my_script import MyClass时,Python无法定位到scripts模块。
解决方法
方法1:使用相对导入
将导入语句改为相对导入格式(适配同目录下的子模块引用):
from .scripts.my_script import MyClass
这种方式无需修改PYTHONPATH,直接利用Python的相对模块查找规则即可生效。
方法2:手动将dags目录加入PYTHONPATH
如果偏好使用绝对导入,可在my_dag.py开头添加代码,将当前脚本所在的dags目录加入Python路径列表:
import sys from pathlib import Path # 获取当前脚本所在的dags目录路径 dags_dir = Path(__file__).parent # 将dags目录加入PYTHONPATH sys.path.append(str(dags_dir)) # 之后即可正常使用绝对导入 from scripts.my_script import MyClass
方法3:验证__init__.py有效性
确认scripts文件夹下的__init__.py文件为空或无语法错误——若该文件存在代码问题,Python会将整个scripts目录判定为无效模块,同样会触发ModuleNotFoundError。
内容的提问来源于stack exchange,提问作者LasTAD
相关产品推荐
相关产品推荐

