突然ImportError: cannot import name 'appengine'from 'requests.packages.urllib3.contrib error on pipeline

回答 7 浏览 3042 2023-05-04

我的管道和调度器运行得很顺利,没有任何问题。在我出去吃午饭后,我改变了神经网络运行的周期数,再次保存.yaml文件,并将其留在名为"budgetff"的存储桶中。

此后,一切都停止了工作。

No clue

enter image description here

有一些错误,我不知道它们是怎么出现的。组件中的代码似乎都没有开始。我做了几个不同的组件都没有成功,因为它们在这一步就失败了。

如果有帮助的话,我安装了kfp --pre,并像这样做了导入工作

import kfp.v2.dsl, kfp.v2.compiler
from kfp.v2.dsl import Artifact, Dataset, Input, Metrics, Model, Output

kfp-2.0.0-beta.15 - 这是运行在VertexAi上的kfp版本,我使用的是Kubeflow与@kfp.v2.dsl.component。

我是想直接运行我的管道。强制在调度器上运行。当它不起作用时,我就在笔记本上尝试。

filipe 提问于2023-05-04
7 个回答
#1楼
得票数 9

原因是requests的最新版本不支持urllib3 2.0.0。这在kfp-2.0.0b16中得到了修复(查看PR的变化),所以你可以升级到这个版本,或者创建一个新的镜像,将urllib降级。

也许这是由过去几天(2023年5月1日和5月4日)发布的requests-toolbelt和/或urllib3的版本所引发的。

我通过使用下面的Docker文件构建一个新的容器来解决这个问题(我使用Python 3.9,但也可以使用你想要的任何东西):

FROM python:3.9

RUN pip install urllib3==1.26.15 requests-toolbelt==0.10.1

我建议使用云构建构建图像,并将其指定为组件的基本图像。

Paul 提问于2023-05-04
Paul 修改于2023-05-05
#2楼 已采纳
得票数 6

我今天也遇到了同样的问题,正在挠头。我发现在组件装饰器的packages_to_install参数中加入appengine-python-standard就解决了这个问题:

@component(base_image="python:3.7", packages_to_install=["appengine-python-standard",...])

对于上下文,我通过 Vertex Workbench 使用 KFP v1.8.20。祈祷吧,它适用于 v2.0.0-beta.15。

mwtmurphy 提问于2023-05-04
mwtmurphy 修改于2023-05-04
这是目前最简单的修复方法,适用于Python 3.7和3.9。pajamas 2023-05-05
非常感谢你。如果你把Docker镜像建立在python:3.7.16-bullseye的基础上,这个镜像在请求request的时候会安装request-toolbelt-0.9.1,这又会产生appengine的依赖错误,这就很好用。只要在安装request之前安装'appengine-python-standard',就应该没事。blurryroots 2023-05-06
#3楼
得票数 2

我有同样的问题。我更新了管道组件,使用了最新的Python版本,现在它可以工作了:

@component(
    base_image="python:3.11",
Nelson Filipe Rodrigues Nunes 提问于2023-05-04
Jeremy Caney 修改于2023-05-04
#4楼
得票数 2

这些问题在kfp==1.8.21和kfp==2.0.0b16中得到了修复。

Abdel M 提问于2023-05-05
#5楼
得票数 2

你应该使用kfp==1.8.21参考。https://github.com/kubeflow/pipelines/pull/9323

rayuron 提问于2023-05-05
#6楼
得票数 0

在我的GitHub行动中发生了这种情况,问题是我使用的是旧版本的poetry。 使用poetry 1.4.2就解决了问题。

具有相同根本问题的问题来源:https://github.com/ionrock/cachecontrol/issues/292#issuecomment-1536120527

jorgmo02 提问于2023-05-09
#7楼
得票数 0

使用了base_image="python:3.11,现在一切都正常了。 非常感谢你的宝贵反馈和帮助!祝你有一个美好的一天

编辑:有很多兼容性问题,决定采用第一个建议,在要安装的软件包上添加appengine-python-standard:)。

filipe 提问于2023-05-05
developerjamiu 修改于2023-05-10
很高兴听到这个消息!如果你能把我的答案标记为已接受的答案,那就太好了 :)mwtmurphy 2023-05-06
请将帮助你的答案标记为接受。另外,请将任何编辑/更新放在原始问题中,这样人们可以更容易地看到变化。blurryroots 2023-05-09