You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Airflow2.3.0升级Amazon Provider至5.0.0后导入STATE_COLORS失败求助

解决Airflow 2.3.0与apache-airflow-providers-amazon==5.0.0的版本冲突及STATE_COLORS导入错误

问题概述

  • 需求:需在SQL文件中运行Redshift多条SQL语句,因此必须使用apache-airflow-providers-amazon==5.0.0,已在docker-compose的_PIP_ADDITIONAL_REQUIREMENTS中配置该版本及其他依赖。
  • 错误:Airflow启动时报错:cannot import name 'STATE_COLORS' from 'airflow.settings'。
  • 背景:此前使用apache-airflow-providers-amazon==3.0.0可正常运行,但该版本不支持Redshift多SQL语句功能;Airflow 2.3.0的官方约束文件要求Amazon Provider版本为3.3.0,与所需的5.0.0存在版本冲突。

原因分析

apache-airflow-providers-amazon==5.0.0是为Airflow 2.4.0及以上版本设计的,Airflow 2.3.0的airflow.settings模块中不存在STATE_COLORS变量,同时官方约束文件限制了Amazon Provider的版本范围,强行升级会触发依赖不兼容,导致导入错误。

解决方案

1. 升级Airflow到兼容版本(推荐)

直接将Airflow版本升级到2.4.0或更高版本,这些版本的官方约束文件已支持apache-airflow-providers-amazon==5.0.0及以上,从根本解决依赖冲突:

  • 修改docker-compose中的Airflow镜像版本,例如使用apache/airflow:2.4.0
  • 确保_PIP_ADDITIONAL_REQUIREMENTS中仅保留apache-airflow-providers-amazon==5.0.0及其他必要依赖,无需额外处理约束文件

2. 绕过约束强制安装(临时方案)

若无法升级Airflow,可通过强制指定版本绕过官方约束,但可能引发其他依赖问题,需严格测试:
在docker-compose的_PIP_ADDITIONAL_REQUIREMENTS中配置:

_PIP_ADDITIONAL_REQUIREMENTS: "apache-airflow-providers-amazon==5.0.0 --constraint https://raw.githubusercontent.com/apache/airflow/constraints-2.3.0/constraints-3.3.0.txt"

或者自定义约束文件,移除对apache-airflow-providers-amazon的版本限制,再指定该文件进行安装。

3. 手动添加缺失变量(不推荐)

仅临时修复导入错误时,可手动在Airflow 2.3.0的airflow/settings.py中添加STATE_COLORS变量,但属于hack手段,生产环境不建议使用:

# 在airflow/settings.py中插入以下内容
STATE_COLORS = {
    "success": "#10b981",
    "failed": "#ef4444",
    "running": "#f59e0b",
    "queued": "#6b7280",
    "up_for_retry": "#f59e0b",
    "up_for_reschedule": "#f59e0b",
    "skipped": "#6b7280",
    "scheduled": "#6b7280",
    "none": "#6b7280"
}

内容的提问来源于stack exchange,提问作者Kar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 04:24:18