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

Dataflow自定义Python模板执行报错:依赖版本不兼容求助

Dataflow自定义Python模板依赖冲突报错解决

核心问题分析

报错包含两个关键冲突:

  1. TypeError: Descriptors cannot not be created directly:根源是protobuf版本过高(当前4.21.5),而apache-beam 2.36.0要求protobuf版本在>=3.12.2,<4范围内。
  2. 多个google-cloud客户端库(vision、videointelligence等)与google-api-core 2.10.0不兼容:这些旧版库仅支持google-api-core >=1.14.0,<2.0.0dev版本。

解决方案

1. 编写兼容的requirements.txt

直接锁定冲突依赖的兼容版本,示例如下:

apache-beam[gcp]==2.36.0
# 匹配beam要求的protobuf版本,同时满足protoc>=3.19.0的要求
protobuf==3.20.3
# 降到google-cloud旧版库支持的1.x分支
google-api-core==1.31.5
# 可选:升级google-cloud库到支持1.x api-core的最新版,或保留旧版但确保兼容
google-cloud-vision==2.11.0
google-cloud-videointelligence==2.5.0
google-cloud-spanner==3.19.1
google-cloud-recommendations-ai==0.8.0
google-cloud-language==2.10.0
google-cloud-datastore==2.15.0
google-cloud-core==1.7.2
google-cloud-bigtable==2.19.0

2. 彻底清理环境重新构建

  • 删除本地虚拟环境(如果使用),重新创建并激活:
    rm -rf venv
    python -m venv venv
    source venv/bin/activate  # Windows系统执行 venv\Scripts\activate
    
  • 安装依赖:
    pip install -r requirements.txt
    
  • 重新构建Dataflow模板,确保指定--requirements_file参数指向更新后的文件。

3. 验证依赖兼容性

安装完成后执行pip freeze,检查输出中:

  • protobuf版本为3.x(如3.20.3)
  • google-api-core版本为1.x(如1.31.5)
  • 所有google-cloud库版本与上述两个依赖无冲突提示

为什么修改requirements.txt无效?

大概率是本地环境存在依赖缓存,或构建模板时未正确加载新的依赖配置。彻底删除旧虚拟环境、重新安装依赖可以避免缓存干扰,确保依赖完全按照指定版本安装。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 23:50:31