Пакеты Python

Я попытался запустить этот код, который использует Google Cloud.

import signal
import sys

from google.cloud import language, exceptions

# create a Google Cloud Natural Languague API Python client
client = language.LanguageServiceClient()

Но это дает следующее сообщение об ошибке:

  Traceback (most recent call last):
  File "analyse-comments.py", line 7, in <module>
    client = language.LanguageServiceClient()
  File "C:\Python27\lib\site-packages\google\cloud\language_v1\gapic\language_service_client.py", line 92, in __init__
    scopes=self._DEFAULT_SCOPES)
  File "C:\Python27\lib\site-packages\google\api_core\grpc_helpers.py", line 132, in create_channel
    credentials, _ = google.auth.default(scopes=scopes)
  File "C:\Python27\lib\site-packages\google\auth\_default.py", line 283, in default
    raise exceptions.DefaultCredentialsError(_HELP_MESSAGE)
google.auth.exceptions.DefaultCredentialsError: Could not automatically determine credentials. Please set GOOGLE_APPLICATION_CREDENTIALS or
explicitly create credential and re-run the application. For more
information, please see
https://developers.google.com/accounts/docs/application-default-credentials.

и строка 7 является этой частью кода

 client = language.LanguageServiceClient()

Я уже установил Google и облако. И у меня есть Google для решений, но ни одно из решений не соответствует тому, что нужно решить в моей ситуации.

1 ответ

Решение

В сообщенной вами ошибке четко указано, что существует проблема с учетными данными:

google.auth.exceptions.DefaultCredentialsError: Could not automatically determine credentials. Please set GOOGLE_APPLICATION_CREDENTIALS or
explicitly create credential and re-run the application.

И он приглашает вас посетить страницу документации для настройки аутентификации для получения дополнительной информации по этой теме:

For more information, please see https://developers.google.com/accounts/docs/application-default-credentials.

Особая проблема заключается в том, что используемые вами клиентские библиотеки (google.cloud.language) пытаемся найти учетные данные для аутентификации с вашей учетной записью GCP непосредственно в переменной среды GOOGLE_APPLICATION_CREDENTIALS но он не может их найти. Чтобы решить эту проблему, сначала необходимо загрузить ключ JSON для своей учетной записи службы со страницы учетных записей службы в консоли (нажав на три точки справа и создать новый ключ JSON), сохранить его локально, а затем указать чтобы с помощью GOOGLE_APPLICATION_CREDENTIALS, как описано в документации, в зависимости от дистрибутива вашей ОС.

Как только эта переменная среды заполнится с правильным путем к каталогу JSON-ключа, используемая вами клиентская библиотека сможет правильно аутентифицироваться, и ошибка должна исчезнуть.

Кроме того, если этот процесс не работает для вас (я не вижу причин, по которым он не будет работать), вы можете явно передать файл учетных данных в LanguageServiceClient() что вы создаете, как показано ниже, как подробно описано в справочнике API для Natural Language API:

from google.cloud import language
from google.oauth2 import service_account

creds = service_account.Credentials.from_service_account_file('path/key.json')
client = language.LanguageServiceClient(
    credentials=creds,
)
Другие вопросы по тегам