Docker部署Apache Airflow扩展依赖报错:找不到setuptools.extern.six模块
修复Docker构建Airflow镜像时的
ModuleNotFoundError: No module named 'setuptools.extern.six'错误 问题根源
错误源于setuptools 66.0.0及以上版本移除了setuptools.extern.six模块,而你指定安装的numpy 1.21.1和scikit-learn 0.24.2依赖这个模块,导致安装过程中触发找不到模块的报错。
解决方案
以下是三种可行的修复方式:
方案1:降低setuptools到兼容版本
将setuptools指定为65.x系列(比如65.5.1),该版本仍保留setuptools.extern.six,与旧版numpy/scikit-learn兼容。修改后的Dockerfile:
FROM apache/airflow:2.9.2 COPY requirements.txt /requirements.txt RUN pip install --upgrade pip RUN pip install -U pip setuptools==65.5.1 wheel RUN pip install --no-cache-dir -r /requirements.txt
注:移除了重复的pip install -r /requirements.txt命令,避免重复安装浪费资源
方案2:升级numpy和scikit-learn到兼容新版本
升级依赖到不依赖setuptools.extern.six的版本,例如:
修改requirements.txt:
numpy >= 1.23.0 scikit-learn >= 1.0.0
同时可以保留setuptools 66.0.0或使用Airflow基础镜像自带的版本,Dockerfile可简化为:
FROM apache/airflow:2.9.2 COPY requirements.txt /requirements.txt RUN pip install --upgrade pip RUN pip install --no-cache-dir -r /requirements.txt
方案3:单独安装six模块
直接安装six库,让旧版numpy/scikit-learn通过全局six模块替代setuptools.extern.six:
修改Dockerfile:
FROM apache/airflow:2.9.2 COPY requirements.txt /requirements.txt RUN pip install --upgrade pip RUN pip install -U pip setuptools==66.0.0 wheel six RUN pip install --no-cache-dir -r /requirements.txt
内容的提问来源于stack exchange,提问作者Vadim
相关产品推荐
相关产品推荐

