Docker部署Airflow运行DAG时遇Selenium模块找不到错误求助
Docker中Airflow DAG无法找到Selenium模块的解决办法
问题根源
出现ModuleNotFoundError: No module named 'selenium'是因为你手动在容器内用pip安装的包,没在Airflow运行的Python环境里。Airflow的worker/scheduler进程使用的Python环境,和你进入容器后操作的环境可能并非同一个,导致模块无法被识别。
解决方法
1. 自定义Airflow镜像(推荐)
基于官方镜像构建专属镜像,把依赖打包进去,避免容器重启后依赖丢失:
# 替换成你正在使用的Airflow版本,比如2.6.3-python3.7 FROM apache/airflow:2.6.3-python3.7 # 安装Chrome浏览器及驱动(若使用Chrome作为浏览器) USER root RUN apt-get update && apt-get install -y chromium chromium-driver # 切换回airflow用户,安装Python依赖包 USER airflow RUN pip install selenium webdriver-manager
构建镜像并重启容器:
docker build -t my-airflow . docker-compose up -d --force-recreate
2. 修改docker-compose.yml自动安装依赖
若不想重新构建镜像,可在docker-compose.yml中为worker和scheduler添加启动命令,容器启动时自动安装依赖:
services: airflow-worker: command: bash -c "pip install selenium webdriver-manager && airflow celery worker" airflow-scheduler: command: bash -c "pip install selenium webdriver-manager && airflow scheduler"
重启容器使配置生效:
docker-compose restart airflow-worker airflow-scheduler
3. 匹配Airflow的Python环境安装依赖
先确认Airflow使用的Python路径:
# 进入airflow-worker容器 docker exec -it <你的worker容器名称> bash # 查看Airflow关联的Python版本及路径 airflow info | grep "Python Version" # 或者直接查看Airflow进程的Python路径 ps aux | grep airflow | grep python
找到对应路径后,使用该路径下的pip安装依赖:
# 示例路径,请替换为你实际查到的路径 /usr/local/bin/pip install selenium webdriver-manager
注意事项
- 不要直接在运行中的容器内手动安装包,容器重启后所有修改会丢失,必须通过镜像构建或docker-compose配置实现依赖持久化。
- 若使用WebDriver,需保证浏览器与驱动版本完全匹配,否则会出现新的运行错误。
内容的提问来源于stack exchange,提问作者V-Ghost
相关产品推荐
相关产品推荐

