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

Airflow Docker环境中Astronomer Provider模块导入失败求助

解决Airflow Docker环境中ModuleNotFoundError: No module named 'astronomer'的问题

核心原因

你使用的SnowflakeOperatorAsync属于astronomer-providers包,该包并非Airflow官方默认预装组件,必须手动将其添加到Docker部署的Airflow容器环境中。本地Python环境的安装操作不会影响Docker容器内的依赖体系,因此重装本地Python或重建容器后会重复出现依赖缺失问题。


解决步骤

1. 固化依赖安装配置(Docker环境专属)

Docker部署的Airflow依赖必须通过容器配置固化,不能仅在本地环境安装。推荐两种实现方式:

方式一:使用requirements.txt管理依赖
  • 在Airflow项目根目录创建requirements.txt文件,添加对应版本的依赖(需匹配你的Airflow版本):

    astronomer-providers[snowflake]>=1.14.0
    

    版本对应关系参考:

    • Airflow 2.2.x → astronomer-providers[snowflake]>=1.0.0,<1.5.0
    • Airflow 2.3.x → astronomer-providers[snowflake]>=1.5.0,<1.10.0
    • Airflow 2.4.x → astronomer-providers[snowflake]>=1.10.0,<1.14.0
    • Airflow 2.5+ → astronomer-providers[snowflake]>=1.14.0
  • 修改docker-compose.yml,将文件挂载到容器并设置自动安装:
    在airflow-webserver、airflow-scheduler、airflow-worker服务的volumes节点添加:

    - ./requirements.txt:/requirements.txt
    

    同时在environment节点添加:

    _PIP_ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS:- -r /requirements.txt}
    
方式二:直接通过环境变量指定依赖

若无需单独维护requirements.txt,可直接在docker-compose.yml的对应服务environment中配置:

_PIP_ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS:-astronomer-providers[snowflake]>=1.14.0}

2. 重建Docker容器

修改配置后,必须重新构建并启动容器,确保依赖被安装到容器内:

docker-compose down
docker-compose up --build -d

3. 验证依赖安装状态

进入任意Airflow容器(如worker容器),检查包是否成功安装:

# 替换为你的容器ID或名称
docker exec -it airflow-worker pip list | grep astronomer-providers

若输出包含astronomer-providers及对应版本号,说明安装成功。


额外注意事项

  • 不要在本地Python环境安装该包,Docker容器使用独立的Python运行环境,本地操作不会对容器内依赖产生影响。
  • 若之前多次重建容器但未固化依赖配置,每次重建都会回到基础镜像状态,导致依赖丢失,必须确保依赖安装步骤被写入Docker配置文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 21:07:31