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

导入financials_api_get模块触发ModuleNotFoundError的原因排查

导入失败原因及解决办法

失败原因

  1. Airflow路径优先级覆盖:Airflow默认会把DAG所在的airflow/dags目录添加到sys.path最前方,你手动插入的show_case路径优先级被覆盖,Python导入时优先从dags目录查找,找不到目标模块。
  2. 包导入规范问题:show_case是包含__init__.py的合法Python包,但直接导入模块名的方式不符合包导入逻辑,在Airflow的特殊运行环境下无法被正确识别。
  3. 次要隐患:拼写错误:函数名get_fundemental_data存在拼写错误(正确应为get_fundamental_data,少了字母a),当前报错是模块找不到,后续找到模块后会触发函数找不到的错误,需提前修正。

解决办法

方法一:调整导入逻辑,明确包路径

修改fundamental_data_pipeline.py的代码,将show_case的父目录加入sys.path,然后通过包名导入:

from pathlib import Path
import sys

# 获取show_case目录的绝对路径
show_case_path = Path(__file__).resolve().parent.parent.parent
# 将show_case的父目录加入sys.path,使show_case作为包被识别
sys.path.insert(1, str(show_case_path.parent))

# 通过包名导入目标函数
from show_case.financials_api_get import get_fundemental_data

由于你已经在show_case/__init__.py中导入了函数,也可以简化为:

from pathlib import Path
import sys

show_case_path = Path(__file__).resolve().parent.parent.parent
sys.path.insert(1, str(show_case_path.parent))

from show_case import get_fundemental_data

方法二:移动模块到dags目录(简单直接)

如果业务允许,直接将financials_api_get.py复制到airflow/dags目录下,无需修改路径,直接导入即可:

from financials_api_get import get_fundemental_data

方法三:配置Airflow的PYTHONPATH环境变量

通过环境变量全局添加路径,避免在每个DAG中手动修改sys.path:

  1. 临时生效:启动Airflow前设置环境变量
export PYTHONPATH="/绝对路径/show_case:$PYTHONPATH"
airflow webserver --port 8080
  1. 永久生效:修改airflow.cfg配置文件,在[core]section下添加:
PYTHONPATH = /绝对路径/show_case

配置完成后,DAG代码中可直接导入:

from financials_api_get import get_fundemental_data

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:06:25