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

使用Jenkins inbound agent Alpine镜像构建Docker镜像遇license_file弃用错误

问题解决:PyYAML编译失败(license_file弃用 + cython_sources错误)

问题根源

你的错误本质是PyYAML 5.4.1源码包与新版setuptools(>=60.0.0)不兼容,同时Python3.11对旧版PyYAML的编译支持存在问题:

  • setuptools 60+版本弃用了license_file参数,但PyYAML 5.x的setup.cfg仍在使用该参数
  • 旧版PyYAML源码编译依赖Cython,但构建环境缺少相关配置,导致触发AttributeError: cython_sources

解决方案(任选其一)

方案1:安装系统预编译的PyYAML,跳过源码编译

在apk add阶段直接安装Alpine官方提供的预编译PyYAML包,避免pip从源码编译:

RUN apk add --no-cache \
   docker=${DOCKER_PACKAGE_VERSION} \
   python3 \
   py-pip \
   py3-yaml \  # 新增:安装系统预编译的PyYAML
   libc-dev \
   gcc \
   python3-dev \
   cmd:pip3 \
   musl-dev && \
 pip3 install pip --upgrade && \
 pip3 install -U \
        'aws-sam-cli>=1.20' \
        'boto3>=1.14.0' \
        'botocore>=1.18.63' \
        'awscli>=1.19.10' \
        'aws-lambda-builders>=1.2.0' \
        'cfn-lint>=0.47' \
        'docker-compose>=1.25.5' \
        --no-cache-dir --ignore-installed PyYAML && \  # 新增:忽略已安装的PyYAML,避免pip覆盖系统包
    apk --purge --no-cache del \
        gcc \
        python3-dev \
        musl-dev \
        libc-dev

方案2:固定setuptools到兼容旧版参数的版本

在pip升级后,先安装低版本setuptools,再安装其他依赖:

RUN apk add --no-cache \
   docker=${DOCKER_PACKAGE_VERSION} \
   python3 \
   py-pip \
   libc-dev \
   gcc \
   python3-dev \
   cmd:pip3 \
   musl-dev && \
 pip3 install pip --upgrade && \
 pip3 install setuptools<60.0.0 && \  # 固定setuptools到59.x版本,兼容旧版license_file参数
 pip3 install -U \
        'aws-sam-cli>=1.20' \
        'boto3>=1.14.0' \
        'botocore>=1.18.63' \
        'awscli>=1.19.10' \
        'aws-lambda-builders>=1.2.0' \
        'cfn-lint>=0.47' \
        'docker-compose>=1.25.5' \
        --no-cache-dir && \
    apk --purge --no-cache del \
        gcc \
        python3-dev \
        musl-dev \
        libc-dev

方案3:升级aws-sam-cli到兼容PyYAML 6.x的版本

如果业务允许,将aws-sam-cli的版本约束提高到>=1.70.0(该版本开始支持PyYAML 6.x),新版PyYAML已修复license_file兼容问题:

RUN apk add --no-cache \
   docker=${DOCKER_PACKAGE_VERSION} \
   python3 \
   py-pip \
   libc-dev \
   gcc \
   python3-dev \
   cmd:pip3 \
   musl-dev && \
 pip3 install pip --upgrade && \
 pip3 install -U \
        'aws-sam-cli>=1.70.0' \  # 升级到支持PyYAML 6.x的版本
        'boto3>=1.14.0' \
        'botocore>=1.18.63' \
        'awscli>=1.19.10' \
        'aws-lambda-builders>=1.2.0' \
        'cfn-lint>=0.47' \
        'docker-compose>=1.25.5' \
        --no-cache-dir && \
    apk --purge --no-cache del \
        gcc \
        python3-dev \
        musl-dev \
        libc-dev

验证

修改Dockerfile后重新构建,即可跳过PyYAML的源码编译步骤,完成依赖安装。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 19:45:54