Пакеты 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,
)