KeyError:使用 pipelinenv/vendor/importlib_metadata/_adapters.py:54 中的“名称”

问题描述 投票:0回答:1

我在 GCP Cloud 构建中运行的 CI/CD 管道中遇到了这个奇怪的错误。

软件包安装失败... 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
    没有解决问题。
还有更多内容:
  • 我找到了这个帖子:https://github.com/pypa/twine/issues/1125#issuecomment-2191295673,其中问题被确定为由
    importlib_metadata==8.0.0
    中的重大更改引起,解决方法是只需固定版本
    importlib-metadata==7.2.1
    ,所以我继续应用更改,但不幸的是它没有解决问题。
  • 我也运行了
    pipenv graph | grep "importlib"
    ,并且 importlib 的所有依赖项都指向该
    7.2.1
    版本。
python pipenv kaniko
1个回答
0
投票

运行并验证构建是否在 docker 中正常工作后,使用:

docker buildx build --platform linux/arm64 -t fakename -f Dockerfile .

我发现

pipenv
通过一路正确构建图像来正确解决依赖关系。然后我发现我在
kaniko
中有这个设置:

--cache=true

然后我通过执行

--cache=true
禁用了它,它起作用并解决了问题,不幸的是,这会减慢构建速度,但我现在没有选择。

我探索并测试了其他选项,例如:

  1. 不要完全压低
    cache
    ,而是使用
    cache-ttl
--cache=true
--cache-ttl=24h

它第一次工作了,但过了一会儿,也许 2 小时后,它导致我遇到了同样的问题,所以不幸的是我回滚了更改。

  1. 更仔细地查看文档,我发现了
    --cache-repo
    设置,这给了我以下组合:
--cache=true
--cache-ttl=24h
--cache-repo=myrepo

也许这将避免其他缓存存储库覆盖此存储库中缓存的依赖项,并将为我提供缓存所需的粒度(我尚未对此进行测试)。

© www.soinside.com 2019 - 2024. All rights reserved.