Python protobuf «из google.protobuf.pyext import _message» - «ImportError: сбой загрузки DLL: указанная процедура не найдена»

1

Я пытаюсь получить простой скрипт Python для преобразования файлов protobuf в файлы json (необходимый формат для того, что я делаю на работе).

Я видел некоторые рекомендации по обновлению до Python 3.6.1 (у меня версия 3.6.0), вверх/вниз, google.protobuf. Ни одно из решений не помогло.

def convert_to_json(directory: str):

    os.chdir(jsonPath)

    for (root, dirs, files) in os.walk(os.getcwd()):

        for file_ in files:

            if os.path.dirname(file_) != root and file_.endswith(".pb"):

                json_file: str = MessageToJson(file_)

        file_name = (os.path.dirname(file_).split('\\')[-1]) + ".json"
        file_path = os.join(jsonPath, file_name)

        with open(file_path, "w") as new_file:
            new_file.write(json_file)

Я ожидал, что это просто запустится и преобразует множество файлов .pb(Google Fonts) в файлы .json, чтобы иметь возможность классифицировать шрифты в моей программе.

Случилось так, что я получил следующую ошибку:

Traceback (most recent call last):
  File "[path to pythonfile].py", line 5, in <module>
    from protobuf.json_format import MessageToJson
  File "C:\Python\Lib\site-packages\google\protobuf\json_format.py", line 63, in <module>
    from google.protobuf import descriptor
  File "[pathToVenv]\venv\lib\site-packages\google\protobuf\descriptor.py", line 47, in <module>
    from google.protobuf.pyext import _message
ImportError: DLL load failed: The specified procedure could not be found.

На первый взгляд - у меня нет "_message" в моем пакете google.protobuf.pyext, но я пробовал разные версии google.protobuf, все они были получены из pip. Pip прекрасно выполнил установку всех остальных пакетов, которые у меня есть, так что вряд ли проблема с pip. Однако в этом же пакете есть файл с именем "cpp_message.py", поэтому я не уверен, куда идти дальше.

Теги:
protocol-buffers
runtime-error

1 ответ

0

решение состоит в том, чтобы понизить ваш protobuf до 3.6.0 вместо 3.6.1

  • 0
    Это сработало для меня! Спасибо!
  • 0
    у меня тоже работает. Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню