Как импортировать внешние скрипты в Airflow DAG с Python? - PullRequest
1 голос
/ 14 мая 2019

У меня следующая структура:

enter image description here

И я пытаюсь импортировать скрипт в некоторые файлы inbound_layer, например, так:

import calc

Однако на веб-сайте Airflow появляется следующее сообщение об ошибке:

enter image description here

Есть идеи?

Ответы [ 2 ]

1 голос
/ 14 мая 2019

Мне нужно было вставить следующий скрипт внутрь ren.py:

import sys, os
from airflow.models import Variable

DAGBAGS_DIR = Variable.get('DAGBAGS_DIR')
sys.path.append(DAGBAGS_DIR + '/bi/inbound_layer/')

Таким образом я делаю доступными пакеты текущей папки.

1 голос
/ 14 мая 2019

Для DAG с воздушным потоком, когда вы импортируете свой собственный модуль, вам нужно убедиться, что 2 вещи:

  1. где находится модуль?Вам нужно найти, где находится корневой путь в вашей папке airflow.Например, в моем окне разработчика папки:

    ~ / projects / data / airflow / команды / имя_группы / projects / default / dags / dag_names / dag_files.py

Корень - воздушный поток, поэтому, если я добавлю свои модули my_module в

~ / projects / data / airflow / команды / 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 в каждой папке в пути.Это указывает, что этот каталог является частью пакетов воздушного потока.В вашем случае вы можете использовать touch \__init\__.py (cli) в папках bi и _inbound_layer_ для создания пустых __init\__.py.
...