对于airflow DAG,如果导入自己的模块,需要确保以下两点:
~/projects/data/airflow/teams/team_name/projects/default/dags/dag_names/dag_files.py
根目录是airflow,所以如果我把我的模块my_module放在
~/projects/data/airflow/teams/team_name/common
那么我需要使用
from teams.team_name.common import my_module
如果你的根目录是bi文件夹的上层目录,并且你将calc
脚本放置在bi/inbound_layer/test.py
中,则可以使用以下代码:
from bi.inbound_layer.test import calc
\__init\__.py
文件,以便导入功能正常运行。您应该在路径中的每个文件夹中都有一个空的\__init\__.py
文件。它表示此目录是空气流包的一部分。在您的情况下,您可以在bi和_inbound_layer_文件夹下使用touch \__init\__.py
(cli)创建空的__init\__.py
文件。Airflow默认会将Airflow主目录中的 dags/、plugins/ 和 config/
目录添加到 PYTHONPATH
中,因此您可以在 dags/
文件夹下创建 commons
文件夹,并在其中创建文件(scriptFileName
)。假设该脚本有一个类(GetJobDoneClass
),您想要在您的 DAG
中导入它,您可以像这样实现:
from common.scriptFileName import GetJobDoneClass
ren.py
文件的顶部插入以下脚本:import sys, os
from airflow.models import Variable
DAGBAGS_DIR = Variable.get('DAGBAGS_DIR')
sys.path.append(DAGBAGS_DIR + '/bi/inbound_layer/')