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

Airflow 2.0.0导入Param报错:ImportError: cannot import name 'Param'如何解决?

解决Airflow 2.0.0中ImportError: cannot import name 'Param'的问题

问题原因

Param类是Airflow 2.2.0版本才正式引入的特性,你的环境使用的是2.0.0版本,因此无法导入该类。

解决方案

方案1:升级Airflow至2.2.0及以上版本

执行以下命令完成版本升级:

pip install --upgrade apache-airflow>=2.2.0

升级完成后,原代码中Param的用法可以完全保留,无需修改DAG逻辑。

方案2:适配Airflow 2.0.0的参数写法(不升级版本)

Airflow 2.0.0支持在params中直接通过字典定义参数的默认值与约束,不需要使用Param类,修改后的DAG代码如下:

from datetime import datetime
from airflow import DAG
from airflow.operators.python import PythonOperator

is_debug_param = "{{ params.is_debug }}"
seti_param = "{{ params.seti }}"


def my_main(is_debug: bool, seti: str):
    print(is_debug)
    print(seti)


with DAG(
        dag_id="my_main",
        description='my_main',
        start_date=datetime(2022, 6, 8, 1, 0),
        schedule_interval=None,
        catchup=False,
        params={
            "is_debug": {"default": False, "type": "boolean"},
            "seti": {"default": "FG", "type": "string", "enum": ["FG", "RX"]},
        },
        render_template_as_native_obj=True,
) as dag:
    task_my_main = PythonOperator(
        task_id='task_my_main_main',
        provide_context=True,
        python_callable=my_main,
        op_kwargs={
            "is_debug": is_debug_param,
            "seti": seti_param,
        },
    )

    task_my_main

注意:Airflow 2.0.0的参数校验逻辑不如2.2.0及以上版本完善,部分约束可能无法严格生效,但基本的默认值和类型提示可以正常使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 02:25:03