Docker环境下Poetry安装Datasets和Transformers失败求助
解决Docker环境下Poetry安装Datasets/Transformers时的pyarrow构建问题
问题根源
Docker基础镜像缺少pyarrow构建必需的系统工具,且pyarrow 16.1.0的PEP 517构建逻辑依赖setuptools_scm等未预装组件,同时容器环境下Poetry的依赖处理逻辑与本地存在差异。
解决方案
1. 修改Dockerfile,预装系统依赖与前置组件
在安装Python包前,先安装构建工具及缺失的Python组件:
# 选用官方Python slim镜像作为基础 FROM python:3.10-slim # 安装系统级构建依赖 RUN apt-get update && apt-get install -y --no-install-recommends \ cmake \ gcc \ g++ \ git \ && rm -rf /var/lib/apt/lists/* # 安装指定版本Poetry(避免版本兼容问题) RUN pip install poetry==1.6.1 # 关闭容器内的虚拟环境创建(容器无需独立虚拟环境) RUN poetry config virtualenvs.create false # 复制项目依赖配置文件 COPY pyproject.toml poetry.lock ./ # 提前安装setuptools_scm与兼容版pyarrow RUN pip install setuptools_scm pyarrow==15.0.0 # 安装项目全部依赖 RUN poetry install --no-root
2. 锁定pyarrow版本到兼容范围
修改pyproject.toml,避免自动拉取存在构建问题的16.x版本:
[tool.poetry.dependencies] python = "^3.10" datasets = "^2.14.6" transformers = "^4.35.2" pyarrow = "~15.0.0" # 锁定至15.x稳定版,规避16.x的PEP 517构建缺陷
3. 调整Poetry构建配置(可选)
若仍存在构建冲突,添加以下配置优化容器内的构建逻辑:
# 启用系统级Git客户端,加速依赖版本检测 RUN poetry config experimental.system-git-client true # 增加构建线程数,提升安装效率 RUN poetry config installer.max-workers 10
排查补充
- 若依然出现
KeyError: 'setuptools_scm',确认在安装pyarrow前单独执行pip install setuptools_scm,确保构建脚本能找到该组件 - 检查Docker镜像的APT源可用性,避免系统依赖安装失败
内容的提问来源于stack exchange,提问作者user22386756
相关产品推荐
相关产品推荐

