Модуль получения google.protobuf.descriptor_pool не имеет атрибута «По умолчанию» в моем скрипте python - PullRequest
0 голосов
/ 25 января 2020

Я новичок в python и использовал скрипт python, написанный кем-то другим. Я работал нормально в другом P C. Просто пришлось установить купе пакетов, включая pip3, google-cloud, google-cloud-bigquery и pandas.

Теперь, когда я установил те же пакеты на другой P C, я не могу запустить сценарий. Сначала отображается следующая ошибка:

module = 'google.protobuf.descriptor_pb2' TypeError: expected bytes, Descriptor found

Однако, когда в очищенные / переустановленные / обновленные пакеты, а также добавлены пакеты protobuf3 и protobuf-py3, ошибка была обновлена ​​до следующего сообщения:

from google.cloud import bigquery
  File "/home/mobeen/.local/lib/python3.6/site-packages/google/cloud/bigquery/__init__.py", line 35, in <module>
    from google.cloud.bigquery.client import Client
  File "/home/mobeen/.local/lib/python3.6/site-packages/google/cloud/bigquery/client.py", line 50, in <module>
    import google.cloud._helpers
  File "/home/mobeen/.local/lib/python3.6/site-packages/google/cloud/_helpers.py", line 33, in <module>
    from google.protobuf import duration_pb2
  File "/home/mobeen/.local/lib/python3.6/site-packages/google/protobuf/duration_pb2.py", line 8, in <module>
    from google.protobuf import symbol_database as _symbol_database
  File "/home/mobeen/.local/lib/python3.6/site-packages/google/protobuf/symbol_database.py", line 193, in <module>
    _DEFAULT = SymbolDatabase(pool=descriptor_pool.Default())
AttributeError: module 'google.protobuf.descriptor_pool' has no attribute 'Default'

. Любая помощь или ведет в этом будет оценена

Ответы [ 3 ]

0 голосов
/ 27 января 2020

Вы тоже пробовали это?

"Я решил проблему с показанной ошибкой атрибута: объект 'module' не имеет атрибута 'Default' при импорте тензорного потока после установки путем удаления избыточного файла protobuf. * ​​1003 *

Причина в том, что некоторые google / protobuf / descriptor_pool.py не имеют определения «По умолчанию». Обычно это происходило в старой версии protobuf, поэтому я успешно обновился, но проблема не решена. И проверил PATH и поискал «google /» protobuf ', я обнаружил, что он существует в "/usr/local/lib/python2.7/dist-packages/google/protobuf/" и "/usr/lib/python2.7/dist-packages/google / protobuf / ". Предыдущий имеет атрибут 'Default', а второй нет. Я попытался импортировать google.protobuf и google.protobuf. * ​​1005 * file , он показывает '/usr/lib/python2.7 /dist-packages/google/protobuf/init.pyc '. Я удалил /usr/lib/python2.7/dist-packages/google/protobuf и попытался импортировать тензор потока, сработало. "

0 голосов
/ 27 апреля 2020

На самом деле я столкнулся с подобным случаем, у нас было установлено 2 пакета protobuf и python3-protobuf. Я на самом деле не знаю причину root для этого, но, очевидно, когда вы делаете это:

pip install protobuf
pip install python3-protobuf

, что ошибка, которую вы описали, происходит, похоже, она дает вам другую версию, как будто эти два пакета имеют перекрывающиеся файлы и они переопределяют друг друга или что-то в этом роде.

решение для меня было просто отменить порядок установки (сначала обязательно удалите их оба):

pip install python3-protobuf
pip install protobuf

или просто

pip install python3-protobuf protobuf

надеюсь, это кому-нибудь поможет.

0 голосов
/ 27 января 2020

Если вы уже нашли решение этой проблемы, не могли бы вы опубликовать его в качестве ответа? Таким образом, люди, имеющие ту же проблему, смогут быстро найти решение этой проблемы. (Это был бы комментарий, но я все еще не могу комментировать)

...