You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Airflow导入模块报错:ModuleNotFoundError,无法找到config模块

问题背景

目录结构

dags/
├── airflow_sched.py
├── backend
│   ├── README.md
│   ├── requirements.txt
│   └── src
│       ├── buffer.py
│       ├── config
│       │   ├── config.py
│       └── stage.py

DAG定义文件(airflow_sched.py)

from datetime import timedelta
import pendulum
from airflow.decorators import dag
from backend.src.stage import stage_data

@dag(
dag_id = "data-sync",
schedule_interval = "1 * * * *",
start_date=pendulum.datetime(2023, 3, 8, tz="Asia/Hong_Kong"),
catchup=False,
dagrun_timeout=timedelta(minutes=20),
)
def Pipeline():
    a = stage_data()

报错信息

执行airflow dags list-import-errors后出现以下错误:

filepath                           | error                                                               
===================================+=====================================================================
/opt/airflow/dags/airflow_sched.py | Traceback (most recent call last):                                  
                                   |   File "/opt/airflow/dags/airflow_sched.py", line 4, in <module>     
                                   |     from backend.src.stage import stage_data                        
                                   |   File "/opt/airflow/dags/backend/src/stage.py", line 5, in <module>
                                   |     from config import config                                       
                                   | ModuleNotFoundError: No module named 'config'  

问题

stage.py中执行from config import config为何报错?该如何解决?


解答

问题原因

Python模块导入时,会从sys.path列表中的路径查找模块。当前stage.py位于dags/backend/src/目录下,config是它的同级子目录,但Airflow运行时的sys.path默认仅包含dags/目录,不会自动包含dags/backend/src/。直接使用from config import config属于绝对导入,Python会在sys.path里查找名为config的模块,自然找不到。

解决方法

推荐以下三种方案:

1. 使用相对导入(符合包结构规范)

在stage.py中将导入语句改为相对导入,用.表示当前目录:

from .config import config

2. 使用绝对导入(从项目根目录开始)

基于dags/作为根目录,使用完整路径导入:

from backend.src.config import config

3. 手动添加路径到sys.path

在stage.py的开头添加代码,将当前文件所在目录加入Python的查找路径:

import sys
from pathlib import Path

# 获取当前文件所在目录(dags/backend/src/)并加入sys.path
sys.path.append(str(Path(__file__).parent))

# 之后再导入config
from config import config

内容的提问来源于stack exchange,提问作者moth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 12:17:29