突然ImportError: cannot import name 'appengine'from 'requests.packages.urllib3.contrib error on pipeline
我的管道和调度器运行得很顺利,没有任何问题。在我出去吃午饭后,我改变了神经网络运行的周期数,再次保存.yaml文件,并将其留在名为"budgetff"的存储桶中。
此后,一切都停止了工作。
有一些错误,我不知道它们是怎么出现的。组件中的代码似乎都没有开始。我做了几个不同的组件都没有成功,因为它们在这一步就失败了。
如果有帮助的话,我安装了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。
我是想直接运行我的管道。强制在调度器上运行。当它不起作用时,我就在笔记本上尝试。
原因是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
我建议使用云构建构建图像,并将其指定为组件的基本图像。
我今天也遇到了同样的问题,正在挠头。我发现在组件装饰器的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。
我有同样的问题。我更新了管道组件,使用了最新的Python版本,现在它可以工作了:
@component(
base_image="python:3.11",
这些问题在kfp==1.8.21和kfp==2.0.0b16中得到了修复。
你应该使用kfp==1.8.21参考。https://github.com/kubeflow/pipelines/pull/9323
在我的GitHub行动中发生了这种情况,问题是我使用的是旧版本的poetry。 使用poetry 1.4.2就解决了问题。
具有相同根本问题的问题来源:https://github.com/ionrock/cachecontrol/issues/292#issuecomment-1536120527。
使用了base_image="python:3.11
,现在一切都正常了。 非常感谢你的宝贵反馈和帮助!祝你有一个美好的一天
编辑:有很多兼容性问题,决定采用第一个建议,在要安装的软件包上添加appengine-python-standard
:)。