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

Docker部署Airflow 2.5.1时出现gspread模块缺失错误

问题根源

你在Windows本地用pip install gspread安装的包是在宿主机的Python环境里,但Airflow运行在Docker容器内部,宿主机和容器的Python环境完全隔离,所以容器里根本找不到这个依赖包。

解决方法

方法1:通过docker-compose环境变量自动安装(最简单)

修改你的docker-compose.yaml,利用内置的_PIP_ADDITIONAL_REQUIREMENTS变量,让容器启动时自动安装需要的包(注意你的代码还用到了df2gspread,也要一起安装):

  1. 找到x-airflow-common下的environment块,修改_PIP_ADDITIONAL_REQUIREMENTS配置:
    _PIP_ADDITIONAL_REQUIREMENTS: gspread df2gspread
    
  2. 重启所有容器:
    docker-compose down -v
    docker-compose up -d
    

容器启动时会自动执行pip install gspread df2gspread,安装完成后DAG的导入错误就会消失。

方法2:构建自定义Airflow镜像(更稳定,适合长期使用)

如果需要固定依赖版本或添加更多自定义配置,推荐构建自己的镜像:

  1. 在docker-compose.yaml同目录下新建Dockerfile:
    FROM apache/airflow:2.5.1
    RUN pip install --no-cache-dir gspread df2gspread
    
  2. 修改docker-compose.yaml里的x-airflow-common块,替换镜像来源为本地构建:
    # image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.5.1}
    build: .
    
  3. 构建镜像并重启容器:
    docker-compose build
    docker-compose down -v
    docker-compose up -d
    

方法3:临时进入容器安装(仅测试用,重启后失效)

如果只是临时测试,可以直接进入容器手动安装,但容器重启后包会丢失:

# 给调度器安装依赖
docker-compose exec airflow-scheduler pip install gspread df2gspread
# 给工作节点安装依赖
docker-compose exec airflow-worker pip install gspread df2gspread
# 给webserver安装(如果需要在web端解析DAG)
docker-compose exec airflow-webserver pip install gspread df2gspread
额外提示

你的DAG里用datetime.now()作为start_date会导致每次解析DAG都认为是新的起始时间,建议改成固定日期,比如和default_args里一致的datetime(2023, 1, 1)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 09:31:59