python - 由于语法无效, Airflow initdb 失败

标签 python ubuntu airflow

我是 Airflow 新手。我按照此处提供的说明进行操作:https://www.youtube.com/watch?v=SYOUbiGtGiU&t=49s

第 1 步:控制面板 |程序和功能 |打开或关闭 Windows 功能

启用:适用于 Linux 的 Windows 子系统

第 2 步:从 Windows 商店安装 Ubuntu 并重新启动系统

第 3 步:安装和更新 PIP

sudo apt-get install software-properties-common

sudo apt-add-repository universe

sudo apt-get update

sudo apt-get install python-pip

第 4 步:安装 Airflow
export SLUGIFY_USES_TEXT_UNIDECODE=yes

pip install apache-airflow

第 5 步:初始化数据库
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

任何想法如何解决它?

最佳答案

  • [PyPI]: Apache-AirFlow是否兼容 Python 2(.7) 和 Python 3
  • 它取决于(很可能,间接地)[PyPI]: Marshmallow-SQLAlchemy (pip 自动将其安装为依赖项),并在运行时使用它(通过 Flask-AppBuilder 间接)
  • 棉花糖-SQLAlchemy 需要 Python 3.6+ ,这意味着它包含与 Python 2(您拥有的)不兼容的代码

  • 有几种方法可以解决这个问题,我认为最简单的方法是 切换到 Python 3 (这也是推荐的,因为 Python 2 的时间不多了:Python 2.7 Countdown)。修改您的一些设置步骤(我必须说这些是盲目的步骤,因为我没有测试它们):

  • 安装 Python 3(如果尚未安装)

    sudo apt-get install python3
    
  • 安装/升级 pip3

    sudo apt-get install python3-pip
    
  • 使用 pip3 安装包

    pip3 install apache-airflow
    
  • 将/usr/bin/python 可执行文件(AirFlow 使用)修改为 python3 的符号链接(symbolic link)(先备份它)

    sudo mv /usr/bin/python /usr/bin/python.orig
    sudo ln -s python3 /usr/bin/python
    
  • 继续其余步骤
  • 关于python - 由于语法无效, Airflow initdb 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58170529/

    相关文章:

    python - Airflow :将 {{ ds }} 作为参数传递给 PostgresOperator

    kubernetes - Airflow 何时使用 KubernetesExecutor 与 KubernetesPodOperator?

    google-cloud-platform - 运行 Google 的 Cloud Compose 时,dag 无法使用 Airflow dag 依赖项

    python - 通过在 pandas 中添加匹配的单元格内容来创建新列

    python - 访问 numpy 数组中元素的属性

    ubuntu - 自动生成的 meteor .js : production fails

    bash - 如何以 root 身份在远程机器上运行来自 Jenkins 的命令?

    python - Django Rest Framework 未从我的数据库检索数据

    python - Matplotlib subplot2grid 在 pandas 0.16.1 中绘制 IndexError

    mysql - 为 ruby​​ 安装 mysql gem