运行生成TFRecord代码遇runtime_version导入错误(TF2.10.1+protobuf3.19.6)
解决生成TFRecord时的protobuf导入错误
问题场景
执行以下生成TFRecord的代码:
!python {SCRIPTS_PATH + '/generate_tfrecord.py'} -x {IMAGE_PATH + '/train'} -l {ANNOTATION_PATH + '/label_map.pbtxt'} -o {ANNOTATION_PATH + '/train.record'} !python {SCRIPTS_PATH + '/generate_tfrecord.py'} -x{IMAGE_PATH + '/test'} -l {ANNOTATION_PATH + '/label_map.pbtxt'} -o {ANNOTATION_PATH + '/test.record'}
出现以下错误:
from google.protobuf import runtime_version as runtime_version ImportError: cannot import name 'runtime_version' from 'google.protobuf' (C:\Users\VERRA HALIZZAH\AppData\Local\Programs\Python\Python39\lib\site-packages\google\protobuf\__init__.py)
当前环境:TensorFlow 2.10.1,protobuf 3.19.6
解决方法
方法1:修改generate_tfrecord.py中的导入语句
错误原因是你的generate_tfrecord.py脚本使用了protobuf 3.20+才有的runtime_version模块,但当前3.19.6版本没有这个API。打开该脚本,找到导入runtime_version的代码行,做如下调整:
如果脚本只是导入但未实际使用该模块,直接删除这行导入语句即可;如果有使用,替换为兼容旧版本的写法:
try: from google.protobuf import runtime_version as runtime_version except ImportError: # 兼容protobuf 3.19及以下版本 runtime_version = None
方法2:调整protobuf版本匹配TensorFlow
TensorFlow 2.10.1官方支持的protobuf版本范围是>=3.19.6,<3.20.0,可执行以下命令升级到该范围内的最新兼容版本:
pip install protobuf==3.19.7 --upgrade
若升级后仍有异常,可降级回3.19.6版本确保基础兼容性:
pip install protobuf==3.19.6 --force-reinstall
内容的提问来源于stack exchange,提问作者Galih Raihan
相关产品推荐
相关产品推荐

