Сбой initdb воздушного потока из-за неверного синтаксиса - PullRequest
0 голосов
/ 30 сентября 2019

Я новичок в Airflow. Я следовал инструкциям, представленным здесь: https://www.youtube.com/watch?v=SYOUbiGtGiU&t=49s

Шаг 1: Панель управления |Программы и возможности |Включение или выключение функций Windows

Включение: Подсистема Windows для Linux

Шаг 2. Установка Ubuntu из хранилища Windows и перезагрузка системы.

Шаг 3. Установка и обновление PIP * 1010. *

sudo apt-get install software-properties-common

sudo apt-add-repository universe

sudo apt-get update

sudo apt-get install python-pip

Шаг 4: установить поток воздуха

export SLUGIFY_USES_TEXT_UNIDECODE=yes

pip install apache-airflow

Шаг 5: Инициализировать DB

airflow initdb

После этого я получил ошибку:

[2019-09-30 17:46:37,888] {__init__.py:51} INFO - Using executor SequentialExecutor
Traceback (most recent call last):
  File "/usr/local/bin/airflow", line 22, in <module>
    from airflow.bin.cli import CLIFactory
  File "/usr/local/lib/python2.7/dist-packages/airflow/bin/cli.py", line 68, in <module>
    from airflow.www_rbac.app import cached_app as cached_app_rbac
  File "/usr/local/lib/python2.7/dist-packages/airflow/www_rbac/app.py", line 26, in <module>
    from flask_appbuilder import AppBuilder, SQLA
  File "/home/barys_rutman/.local/lib/python2.7/site-packages/flask_appbuilder/__init__.py", line 5, in <module>
    from .base import AppBuilder
  File "/home/barys_rutman/.local/lib/python2.7/site-packages/flask_appbuilder/base.py", line 5, in <module>
    from .api.manager import OpenApiManager
  File "/home/barys_rutman/.local/lib/python2.7/site-packages/flask_appbuilder/api/__init__.py", line 11, in <module>
    from marshmallow_sqlalchemy.fields import Related, RelatedList
  File "/home/barys_rutman/.local/lib/python2.7/site-packages/marshmallow_sqlalchemy/__init__.py", line 1, in <module>
    from .schema import TableSchemaOpts, ModelSchemaOpts, TableSchema, ModelSchema
  File "/home/barys_rutman/.local/lib/python2.7/site-packages/marshmallow_sqlalchemy/schema.py", line 101
    class TableSchema(ma.Schema, metaclass=TableSchemaMeta):
                                          ^
SyntaxError: invalid syntax

Есть идеи как это исправить?

1 Ответ

2 голосов
/ 30 сентября 2019
  1. [PyPI]: Apache-AirFlow является Python 2 (.7) и Python 3 совместим
  2. Зависит от(скорее всего, косвенно) в [PyPI]: Marshmallow-SQLAlchemy ( pip автоматически устанавливает его как зависимость) и использует его (косвенно, через Flask-AppBuilder ) во время выполнения
  3. Marshmallow-SQLAlchemy требует Python 3.6 + , что означает, что он содержит код, который не совместим с Python 2 (что у вас есть)

Есть несколько способов обойти это, я думаю, что самый простой - это переключение на Python 3 (и это также рекомендуемый, потому что пески времени для Python 2 истощаются: Python 2.7 Обратный отсчет ).
Измените некоторые шаги настройки (я должен сказать, что это слепые шаги, поскольку я их не тестировал):

  • Установка Python 3 (если нетуже установлено)

    sudo apt-get install python3
    
  • Установка / обновление pip3

    sudo apt-get install python3-pip
    
  • Использование pip3 для установки пакетов

    pip3 install apache-airflow
    
  • Измените / usr / bin / python исполняемый файл (который AirFlow использует), чтобы он стал символическая ссылка до python3 (сначала сделайте резервную копию)

    sudo mv /usr/bin/python /usr/bin/python.orig
    sudo ln -s python3 /usr/bin/python
    
  • Продолжайте выполнять остальные шаги

...