AWS CodeBuild执行pip升级命令报错exit status 1问题咨询
根因定位
Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: python -m pip install --upgrade --force pip. Reason: exit status 1
从构建日志可以明确两个核心问题:
- 执行
python -m pip命令时调用的是系统默认的Python 2.7版本,PyPI已停止对Python 2相关包的索引支持,无法找到适配的pip版本,直接返回安装失败。 - 你提供的
buildspec.yaml中install阶段并没有python -m pip install --upgrade --force pip这条命令,说明当前CodeBuild运行时使用的构建配置和你提交的文件不一致,大概率是CloudFormation模板中内嵌了额外的构建命令,或是代码仓库中buildspec.yml版本不对。
修复步骤
- 核对CodeBuild的buildspec来源:
检查CloudFormation中AWS::CodeBuild::Project资源的BuildSpec配置项,如果是模板内嵌的配置,直接删除python -m pip install --upgrade --force pip整条命令即可;如果配置指定读取代码仓库中的buildspec.yml,确认仓库内的文件内容和你提供的一致,无多余的Python 2 pip升级命令。 - 统一使用Python 3执行包管理操作:
所有涉及pip的调用都明确使用pip3或python3 -m pip,避免误调用Python 2的依赖工具,你当前提交的buildspec.yaml中pip3 install --upgrade awscli、pip3 install -r requirements.txt的写法符合要求,无需修改。 - 调整kubectl调用顺序(可选):
日志中出现kubectl: not found报错是因为旧版本buildspec中调用kubectl的命令在export PATH=$PWD/:$PATH之前执行,你提交的新版本buildspec中顺序正确,确认运行时使用该版本即可消除报错。 - 升级构建镜像(推荐):
日志显示当前使用的是Ubuntu 14.04版本构建镜像,已停止维护多年,建议在CloudFormation的CodeBuild配置中替换为最新的Amazon Linux 2或Ubuntu 22.04标准构建镜像,避免后续出现更多依赖兼容性问题。
内容的提问来源于stack exchange,提问作者Alwaleed Alshamekh
相关产品推荐
相关产品推荐

