在Airflow DAG中导入本地模块(Python脚本)

bad*_*tal 9 python airflow

我正在尝试将本地模块(python脚本)导入DAG。

目录结构:

airflow/
??? dag
?   ??? __init__.py
?   ??? my_DAG.py
??? script
    ??? subfolder
        ??? __init__.py
        ??? local_module.py

Run Code Online (Sandbox Code Playgroud)

my_DAG.py中的示例代码:

#trying to import from local module
from script.subfolder import local_module  

#calling a function in local_module.py  
a = some_function()  
Run Code Online (Sandbox Code Playgroud)

我在Airflow中收到一条错误消息,说“破损的DAG:my_DAG。没有名为“ local_module”的模块。

我已经将Airflow更新为1.9.0,但这不能解决问题。

  • 这里有什么解决方案?
  • 我还读了一些我可以通过创建插件来解决此问题的地方。谁能指出我该怎么做?

谢谢。

tob*_*bi6 7

这通常与 Airflow 的配置方式有关。

在 中airflow.cfg,确保中的路径airflow_home正确设置为 Airflow 目录结构所在的路径。

然后 Airflow 扫描所有子文件夹并填充它们,以便可以找到模块。

否则,只需确保您尝试导入的文件夹位于 Python 路径中:如何使用 PYTHONPATH

  • 我的“airflow.cfg”没有“airflow_home”。自从这个答案发布以来,情况有变化吗? (10认同)
  • 您还可以通过设置 `export AIRFLOW_HOME=path_to_my_airflow_home_dir` 来实现此目的。 (2认同)