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

Airflow 1.7+Python3.6构建Dataproc DAG报错:typing无NoReturn属性

问题解决:Airflow 1.7 + Python 3.6 下 typing.NoReturn 缺失报错

问题根源

typing.NoReturn 是 Python 3.6.2 及以上版本才加入标准库的类型注解,你使用的 Python 3.6 版本可能低于3.6.2,或者 Airflow 1.7 依赖的 Google Cloud 相关库版本过高,引入了依赖 NoReturn 的代码,从而触发模块'typing'没有属性NoReturn的错误。

解决方案

1. 升级Python 3.6到最新小版本

如果必须保留Python 3.6,升级到Python 3.6.15(3.6分支的最后稳定版),该版本包含typing.NoReturn定义,可直接解决缺失问题。

2. 锁定兼容的依赖版本

Airflow 1.7是非常老旧的版本,需指定与它和Python 3.6兼容的GCP依赖版本。在你的requirements.txt中添加:

apache-airflow==1.7.0
apache-airflow[gcp]==1.7.0
google-cloud-dataproc<1.0.0

执行pip install -r requirements.txt重新安装依赖,避免高版本GCP库引入不兼容的类型注解。

3. 手动添加兼容补丁(临时方案)

如果无法升级Python或依赖,在DAG文件的最开头添加以下代码,手动补全typing.NoReturn:

import typing
# 为Python 3.6早期版本补全NoReturn
if not hasattr(typing, 'NoReturn'):
    typing.NoReturn = type('NoReturn', (), {})

这段代码会在导入其他库之前,给typing模块添加缺失的NoReturn属性,避免报错。

4. 优先考虑升级Airflow版本

Airflow 1.7已停止维护多年,存在大量安全漏洞和兼容性问题。建议升级到Airflow 1.10.15(1.x分支的最后稳定版),它对Python 3.6支持完善,且Dataproc Operator的功能更稳定。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 06:40:14