web-dev-qa-db-fra.com

Airflow aucun module nommé pour le répertoire dans le répertoire airflow_home

Je travaille avec virtualenv. J'essaie d'utiliser des packages dans les dossiers DAG. État actuel de airflow_home le répertoire est:

airflow_home/airflow.cfg
airflow_home/airflow.db
airflow_home/dags/__init__.py 
airflow_home/dags/hello_world.py
airflow_home/dags/support/inner.py
airflow_home/dags/support/__init__.py 

hello_world.py a le code:

from datetime import datetime
from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator
from airflow.operators.python_operator import PythonOperator
from dags.support import inner


def print_hello():
    return 'Hello world'

dag = DAG('hello_world', description='simple tutorial DAG',
          schedule_interval='0 12 * * *', start_date=datetime(2017, 8, 20), catchup=False)

dummy_operator = DummyOperator(task_id='dummy_task', retries=3, dag=dag)

hello_operator = PythonOperator(task_id='hello_task', python_callable=print_hello, dag=dag)

hello_from_inner_operator = PythonOperator(task_id='hello_from_inner', python_callable=inner.hello_from_inner, dag=dag)

dummy_operator >> hello_operator
hello_operator >> hello_from_inner_operator

Si je pouvais exécuter manuellement ce script, il s'exécute. Mais ensuite je démarre le planificateur de flux d'air,

Broken DAG: No module named 'dags'

une erreur apparaît. Qu'est-ce que je fais mal, quelle est la façon de résoudre ce problème?

12
zxyzxy

utilisation from support import inner au lieu.

le chemin $AIRFLOW_HOME/dags sera ajouté à sys.path au début du flux d'air. Il recherchera donc les modules dans le répertoire dags.

9
Freedom