Errors
Apache Airflow

Apache Airflow: Error while install airflow: By default one of Airflow's dependencies installs a GPL

Ты ставишь Airflow, предвкушая, как скоро начнешь настраивать даги, а вместо этого получаешь в терминал внезапную ошибку про какую-то GPL лицензию. Знакомо? Это

Ты ставишь Airflow, предвкушая, как скоро начнешь настраивать даги, а вместо этого получаешь в терминал внезапную ошибку про какую-то GPL лицензию. Знакомо? Это classic.

Ситуация стандартная: выполняешь pip install airflow[postgres] (или с другим пакетом), и процесс падает с RuntimeError, который кричит про зависимость unidecode и лицензию GPL.

Airflow тут просто перестраховывается. Для генерации “красивых” имён (слагов) он использует библиотеку python-slugify. У неё два варианта зависимости для обработки Unicode: unidecode (GPL) или text-unidecode (BSD).

По умолчанию pip хочет поставить GPL-версию (unidecode), но команда установки Airflow намеренно ломает процесс, чтобы ты, как взрослый инженер, осознанно выбрал лицензионные условия для своего проекта.

Решение в две строки

Перед установкой нужно выставить одну из двух переменных окружения. Делается это прямо в командной строке.

Вариант 1: Согласиться на GPL

export AIRFLOW_GPL_UNIDECODE=yes
pip install apache-airflow[postgres]

Это скажет установщику: “Я в курсе про GPL, ставь unidecode, мне можно”. Если ты разрабатываешь коммерческий продукт с закрытым кодом, этот путь не для тебя — лицензия GPL может быть заразной.

Вариант 2: Выбрать BSD-альтернативу

export SLUGIFY_USES_TEXT_UNIDECODE=yes
pip install apache-airflow[postgres]

Это безопасный путь. Установится BSD-лицензионная библиотека text-unidecode. Функциональность почти та же, а головной боли с лицензиями — ноль.

Важные нюансы

Команда export делает переменную доступной только для текущей сессии shell. Если используешь Docker, прокидывай её через -e. В Kubernetes — через ConfigMap или в манифесте пода.

И да, обрати внимание на точное имя пакета. Ставь apache-airflow[postgres], а не просто airflow[postgres]. Первое — официальный пакет, второе — может быть чем угодно.

Что в сухом остатке

Ошибка не страшная, а даже полезная. Она заставляет тебя сделать осознанный выбор лицензии для зависимостей. В 99% случаев внутри компании смело выбирай SLUGIFY_USES_TEXT_UNIDECODE=yes и живи спокойно. GPL-версию оставь для open-source проектов, где это допустимо.

Порядок действий прост: перед pip-инсталляцией выставляешь одну переменную, забываешь об этой проблеме навсегда и переходишь к более интересным вещам — например, к отладке дагов, которые не появляются в интерфейсе.