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

GCP Dataflow Python流水线ModuleNotFoundError问题求助

解决GCP Dataflow Python流水线找不到unidecode模块的问题

先确认镜像参数是否正确传递

生成模板时必须同时指定--sdk_location=container和--worker_harness_container_image两个参数,缺一个都会导致Worker使用默认镜像。示例命令:

python your_pipeline.py \
  --runner=DataflowRunner \
  --project=your-project-id \
  --region=your-region \
  --staging_location=gs://your-bucket/staging \
  --temp_location=gs://your-bucket/temp \
  --template_location=gs://your-bucket/templates/your-template \
  --sdk_location=container \
  --worker_harness_container_image=us-central1-docker.pkg.dev/your-project-id/your-repo/your-image:tag

另外,本地拉取你推送到Artifact Registry的镜像,进入容器后执行pip list | grep unidecode,确认镜像内确实安装了该依赖——避免镜像本身未正确打包依赖导致白忙活。

检查模板与任务提交的一致性

通过UI创建任务时,不要修改镜像相关配置项,确保使用的是生成模板时指定的自定义镜像。如果UI中显示的是默认Beam SDK镜像,说明模板生成时参数未生效,删除旧模板重新生成即可。

若仍想使用requirements_file方式

  • 确保requirements.txt文件仅包含一行unidecode,无多余格式或内容。
  • 生成模板时必须携带--requirements_file=./requirements.txt参数,且文件路径与执行命令的当前目录对应。
  • 注意:使用自定义镜像时,requirements_file的设置会被镜像内的依赖覆盖,此时无需再指定该参数。

查看Worker日志确认实际使用的镜像

进入Dataflow任务的日志页面,搜索container image关键词,确认Worker实际拉取的是你的自定义镜像还是默认镜像。如果是默认镜像,说明模板生成命令的参数传递有误,需重新检查修正。

镜像构建的注意事项

  • 基础镜像必须与你使用的Beam版本匹配,比如使用Beam 2.50.0时,需基于apache/beam-python3.9:2.50.0构建。
  • Dockerfile中安装依赖的命令要正确,示例:
FROM apache/beam-python3.9:2.50.0
RUN pip install unidecode
  • 推送镜像到Artifact Registry时,确保标签正确,避免拉取到旧版本镜像。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 16:15:06