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

Airflow 1.10.0自定义传感器报错:No module named 'sensors'求助

解决Airflow 1.10.0中自定义Sensor模块导入报错的问题

针对你遇到的No module named 'sensors'错误,不想使用Airflow Plugins的话,可以通过以下两种方法解决,核心都是让Python能够找到你的自定义模块:

方法一:将自定义模块放到DAG目录下(推荐)

Airflow确实会把dags/目录添加到Python的PATH中,你可以调整文件夹结构,把sensors目录放到dags/下面,同时确保Python能识别它为一个包:

  1. 调整后的目录结构:
    /usr/local/airflow/dags/
    ├── my_dag.py
    └── sensors/
        ├── __init__.py  # 必须添加这个空文件,让Python把sensors识别为包
        └── my_sensor.py
    
  2. 保持DAG文件中的导入语句不变:
    from sensors.my_sensor import MySensor
    
  3. 重启Airflow scheduler和webserver,或者触发DAG重新加载,错误应该就能解决。

方法二:手动将模块目录添加到Python路径

如果不想移动sensors文件夹的位置,可以在DAG文件的开头,手动把sensors所在的父目录添加到Python的系统路径中:

  1. 假设你的sensors文件夹在/usr/local/airflow/目录下(和dags/同级),在my_dag.py的最顶部添加以下代码:
    import sys
    from pathlib import Path
    
    # 获取Airflow根目录(也就是sensors所在的目录)
    airflow_root = Path(__file__).parent.parent  # __file__是当前DAG文件的路径,parent.parent就是dags的上级目录
    sys.path.append(str(airflow_root))
    
  2. 然后再执行你的导入语句:
    from sensors.my_sensor import MySensor
    
  3. 注意:如果是分布式Airflow部署,要确保所有worker节点上的sensors文件夹路径一致,或者使用共享存储(比如NFS)挂载该目录,避免worker找不到模块。

额外注意事项

  • 不管用哪种方法,sensors文件夹下必须有__init__.py文件(可以是空文件),否则Python无法将其识别为一个可导入的包。
  • Airflow 1.10.0版本比较老旧,后续如果有升级计划,建议考虑升级到稳定的新版本(比如2.x系列),新版本对自定义模块的支持更灵活。

内容的提问来源于stack exchange,提问作者Alessandro S.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:21:43