GAミント至上主義

Web Monomaniacal Developer.

AirflowでImportError: cannot import name 'HTMLString' from 'wtforms.widgets'

AirflowをCloud Buildでビルドして動かしたら突然、下記のようなエラーが起きた。

Traceback (most recent call last):
  File "/usr/local/bin/airflow", line 26, in <module>
    from airflow.bin.cli import CLIFactory
  File "/usr/local/lib/python3.7/site-packages/airflow/bin/cli.py", line 71, in <module>
    from airflow.www_rbac.app import cached_app as cached_app_rbac
  File "/usr/local/lib/python3.7/site-packages/airflow/www_rbac/app.py", line 28, in <module>
    from flask_appbuilder import AppBuilder, SQLA
  File "/usr/local/lib/python3.7/site-packages/flask_appbuilder/__init__.py", line 6, in <module>
    from .base import AppBuilder  # noqa: F401
  File "/usr/local/lib/python3.7/site-packages/flask_appbuilder/base.py", line 8, in <module>
    from .api.manager import OpenApiManager
  File "/usr/local/lib/python3.7/site-packages/flask_appbuilder/api/manager.py", line 7, in <module>
    from flask_appbuilder.baseviews import BaseView
  File "/usr/local/lib/python3.7/site-packages/flask_appbuilder/baseviews.py", line 21, in <module>
    from .forms import GeneralModelConverter
  File "/usr/local/lib/python3.7/site-packages/flask_appbuilder/forms.py", line 17, in <module>
    from .fieldwidgets import (
  File "/usr/local/lib/python3.7/site-packages/flask_appbuilder/fieldwidgets.py", line 3, in <module>
    from wtforms.widgets import html_params, HTMLString
ImportError: cannot import name 'HTMLString' from 'wtforms.widgets' (/usr/local/lib/python3.7/site-packages/wtforms/widgets/__init__.py)


Airflowというより、Flask-AppBuilderが使っているWTFormsというライブラリが原因の模様。
2.3.0のリリースが2020/4/22、今日だった。確信。

pypi.org

それぞれのバージョンを確認したところ間違いない。

動いてたバージョン
WTForms==2.2.1

エラーになったバージョン
WTForms-2.3.0

とりあえず、2.2.1を指定してインストールさせることで一時的に解決した。

Flask Web Development: Developing Web Applications with Python

Flask Web Development: Developing Web Applications with Python