web-dev-qa-db-fra.com

Comment résoudre "AttributeError: le module 'google.protobuf.descriptor' n'a pas d'attribut '_internal_create_key"?

Je l'ai rencontré lors de l'exécution de from object_detection.utils import label_map_util dans le notebook jupyter. Il s'agit en fait du cahier du didacticiel de détection d'objet tensorflow (il est livré avec l'API de détection d'objet tensorflow) Le journal des erreurs complet:

AttributeError                            Traceback (most recent call last)
<ipython-input-7-7035655b948a> in <module>
      1 from object_detection.utils import ops as utils_ops
----> 2 from object_detection.utils import label_map_util
      3 from object_detection.utils import visualization_utils as vis_util

~\AppData\Roaming\Python\Python37\site-packages\object_detection\utils\label_map_util.py in <module>
     25 import tensorflow as tf
     26 from google.protobuf import text_format
---> 27 from object_detection.protos import string_int_label_map_pb2
     28 
     29 

~\AppData\Roaming\Python\Python37\site-packages\object_detection\protos\string_int_label_map_pb2.py in <module>
     19   syntax='proto2',
     20   serialized_options=None,
---> 21   create_key=_descriptor._internal_create_key,
     22   serialized_pb=b'\n2object_detection/protos/string_int_label_map.proto\x12\x17object_detection.protos\"\xc0\x01\n\x15StringIntLabelMapItem\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\x05\x12\x14\n\x0c\x64isplay_name\x18\x03 \x01(\t\x12M\n\tkeypoints\x18\x04 \x03(\x0b\x32:.object_detection.protos.StringIntLabelMapItem.KeypointMap\x1a(\n\x0bKeypointMap\x12\n\n\x02id\x18\x01 \x01(\x05\x12\r\n\x05label\x18\x02 \x01(\t\"Q\n\x11StringIntLabelMap\x12<\n\x04item\x18\x01 \x03(\x0b\x32..object_detection.protos.StringIntLabelMapItem'
     23 )

AttributeError: module 'google.protobuf.descriptor' has no attribute '_internal_create_key'
11
Reghunaath A A

Après avoir essayé de nombreuses solutions différentes (je travaille sur un Mac), celle qui a fonctionné pour moi est de réinstaller protobuf en utilisant:

PROTOC_Zip=protoc-3.7.1-osx-x86_64.Zip
curl -OL https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/$PROTOC_Zip
Sudo unzip -o $PROTOC_Zip -d /usr/local bin/protoc
Sudo unzip -o $PROTOC_Zip -d /usr/local 'include/*'
rm -f $PROTOC_Zip

Comme souligné dans cet article

0
TacoEater