2017-05-11 30 views
5

Poniższy samouczek dotyczący przepływu powietrza: here.Nie można importować wtyczek przepływu powietrza

Problem: serwer WWW zwraca następujący błąd

Broken DAG: [/usr/local/airflow/dags/test_operator.py] cannot import name 
MyFirstOperator 

Uwagi: Struktura katalogu wygląda następująco:

airflow_home 
├── airflow.cfg 
├── airflow.db 
├── dags 
│ └── test_operators.py 
├── plugins 
│ └── my_operators.py 
└── unittests.cfg 

Ja próbuje importować wtyczki w „test_operators .py "tak:

from airflow.operators import MyFirstOperator 

Kod jest identyczny z tym, który znajduje się w samouczku.

+0

nigdy nie używałem Przepływ powietrza przed. Ale czy zainstalowałeś wymagania dla projektu za pomocą pip? – cbll

+0

@ cbll - tak, wszystko zostało zainstalowane zgodnie z dokumentacją: https://airflow.incubator.apache.org/installation.html –

Odpowiedz

1

W artykule to robi tak:

class MyFirstPlugin(AirflowPlugin): 
    name = "my_first_plugin" 
    operators = [MyFirstOperator] 

Zamiast używać:

class MyFirstPlugin(AirflowPlugin): 
    name = "my_first_plugin" 
    operators = [MyFirstOperator] 
    # A list of class(es) derived from BaseHook 
    hooks = [] 
    # A list of class(es) derived from BaseExecutor 
    executors = [] 
    # A list of references to inject into the macros namespace 
    macros = [] 
    # A list of objects created from a class derived 
    # from flask_admin.BaseView 
    admin_views = [] 
    # A list of Blueprint object created from flask.Blueprint 
    flask_blueprints = [] 
    # A list of menu links (flask_admin.base.MenuLink) 
    menu_links = [] 

również nie używać:

from airflow.operators import MyFirstOperator 

According to the airflow article on plugins, it should be:

from airflow.operators.my_first_plugin import MyFirstOperator 

Jeśli to nie działa, spróbuj:

from airflow.operators.my_operators import MyFirstOperator 

Jeśli to nie zadziała, należy sprawdzić dziennik serwera internetowego na starcie, aby uzyskać więcej informacji.

+2

Dzięki, próbowałem tego już - w ramach importu podnosi "brak modułu o nazwie" my_first_plugin ", "my_operators". –

+0

Którą wersję przepływu powietrza używasz? Czy możesz uaktualnić do wersji 1.8, jeśli ma 1.7? – jhnclvr

+0

Mam 1,8 - dzięki za radę. –

1

Ponownie uruchomiłem serwer WWW, a teraz wszystko działa poprawnie.

Oto co myślę, że może się zdarzyć:

  1. Zanim zacząłem z samouczka przykład, próbowałem prowadzę własną wtyczkę i dag. Wystąpił drobny błąd składniowy przy pierwszym uruchomieniu, który naprawiłem, jednak po poprawce zacząłem otrzymywać komunikat "nie można zaimportować nazwy".
  2. Usunąłem wtyczkę i dag i spróbowałem użyć tego z samouczka, żeby zobaczyć, co się dzieje.

Domyślam się, że błąd z etapu 1 w jakiś sposób wpływa kroku 2.

+2

Z mojego doświadczenia wynika, że ​​musisz ponownie uruchomić serwer WWW, dodając/modyfikując dowolne wtyczki. –

+0

@Daniel Lee zrobił dobry punkt tutaj, musisz zrestartować swój webserver i harmonogram, a przynajmniej to działało dla mnie w Airflow 1.8.2 – dorvak

Powiązane problemy