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
- Airflow 2.2.x →
修改
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
相关产品推荐
相关产品推荐

