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

GCP Cloud Build中Pipenv安装报KeyError: 'Name'问题求助

问题描述

在GCP Cloud Build的CI/CD流水线中执行pipenv install时触发错误:

Package installation failed... KeyError: 'Name' site-packages/pipenv/vendor/importlib_metadata/_adapters.py:54

本地执行pipenv install完全正常,使用Python版本为3.11.4。

已尝试的排查步骤:

  • 删除Pipfile.lock后重新执行pipenv install,无效。
  • 执行pipenv --rm删除环境、pip cache purge清理缓存,重新创建环境并执行pipenv shell && pipenv install,问题仍存在。

补充信息:

  • 已知该错误由importlib_metadata==8.0.0的破坏性变更导致,尝试固定importlib-metadata==7.2.1后问题未解决。
  • 执行pipenv graph | grep "importlib"显示所有项目依赖的importlib版本均为7.2.1。

问题根源

问题出在pipenv自身内置(vendored)的importlib_metadata库,而非项目依赖的版本。即使你锁定了项目里的importlib-metadata版本,Cloud Build环境中使用的pipenv可能自带了8.0.0版本的importlib_metadata,这才是触发KeyError的核心原因。


解决方案

方案1:降级pipenv到稳定版本

pipenv在2024.0.0及之后的版本可能引入了有问题的importlib_metadata依赖,降级到更早的稳定版本(如2023.10.2)即可解决:

pip install pipenv==2023.10.2

在Cloud Build的构建步骤中先执行该命令,再运行pipenv install。

方案2:强制替换pipenv内置的importlib_metadata

手动将pipenv自带的importlib_metadata替换为兼容的7.2.1版本:

# 先安装指定版本的importlib_metadata
pip install importlib-metadata==7.2.1
# 定位pipenv的vendor目录并替换内置库
PIPENV_VENDOR_DIR=$(pip show pipenv | grep Location | awk '{print $2"/pipenv/vendor"}')
rm -rf $PIPENV_VENDOR_DIR/importlib_metadata*
cp -r $(pip show importlib-metadata | grep Location | awk '{print $2"/importlib_metadata"}') $PIPENV_VENDOR_DIR/
cp -r $(pip show importlib-metadata | grep Location | awk '{print $2"/importlib_metadata-7.2.1.dist-info"}') $PIPENV_VENDOR_DIR/

方案3:临时跳过锁文件检查(不推荐长期使用)

如果允许临时绕过锁文件验证,可尝试:

pipenv install --skip-lock

该方法仅作为临时 workaround,长期使用会失去依赖版本锁定的安全性。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 20:03:17