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

Python多级包导入本地正常 Airflow运行找不到模块问题咨询

解决Airflow运行时Python跨目录导入模块失败问题

问题根因

你本地运行时的工作目录恰好是comp.py所在的Folder5目录,所以../../能正确解析到Module根目录;但Airflow调度任务时的默认工作目录是Airflow的DAG目录/运行目录,和你项目的目录结构无关,硬编码的相对路径../../解析后指向的是错误路径,自然找不到utils.py模块。

解决方案

不需要手动配置环境变量,只要将comp.py中硬编码添加相对路径的逻辑,替换为基于当前文件位置动态计算项目根目录的绝对路径再添加到sys.path即可,代码如下:

import os
import sys

# 获取当前comp.py文件所在的Folder5目录的绝对路径
current_dir = os.path.dirname(os.path.abspath(__file__))
# 向上追溯两层得到Module根目录的绝对路径
project_root = os.path.abspath(os.path.join(current_dir, "..", ".."))
# 避免重复添加路径
if project_root not in sys.path:
    # insert(0)优先级更高,防止路径冲突
    sys.path.insert(0, project_root)

# 之后直接导入即可
from Common.utils import 你要导入的函数名

补充说明

你当前utils.py中基于__file__读取credentials.ini的逻辑是正确的,完全不受运行工作目录影响,不需要修改。
这个方案不管是本地运行,还是Airflow调度运行,都会基于comp.py的实际存储位置定位到项目根目录,不会受运行时工作目录的影响。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:39:02