web-dev-qa-db-ja.com

google.auth.exceptions.DefaultCredentialsError:

だから、私は正確にgoogle変換APIのドキュメントに従って同じ手順に従います、以下のコードがそれに提供されました。

# Imports the Google Cloud client library

from google.cloud import translate

# Instantiates a client
translate_client = translate.Client()

# The text to translate
text = u'Hello, world!'
# The target language
target = 'ru'

# Translates some text into Russian
translation = translate_client.translate(
    text,
    target_language=target)

print(u'Text: {}'.format(text))
print(u'Translation: {}'.format(translation['translatedText']))

これをコンパイルすると、次のエラーが返されます。

トレースバック(最新の呼び出しは最後):ファイル "test.py"、5行目、translate_client = translate.Client()ファイル "C:\ ProgramData\Anaconda3\lib\site-packages\google\cloud\translate_v2\client.py "、65行目init super(Client、self).init(credentials = credentials、_http = _http)ファイル" C:\ ProgramData\Anaconda3\lib\site -packages\google\cloud\client.py "、129行目init credentials、_ = google.auth.default()ファイル" C:\ ProgramData\Anaconda3\lib\site-packages\google\auth_default.py "、行294、デフォルトの認証情報、project_id = checker()ファイル" C:\ ProgramData\Anaconda3\lib\site-packages\google\auth_default.py "、行165、_get_explicit_environ_credentials os.environ [ environment_vars.CREDENTIALS])ファイル「C:\ ProgramData\Anaconda3\lib\site-packages\google\auth_default.py」の89行目の_load_credentials_from_file 'ファイル{}が見つかりませんでした。'。format(filename))google.auth .exceptions.DefaultCredentialsError:ファイルD:\ Summer Projects\Translate\social media analysis-2a59d94ba22d.json was not見つかりました。

D:\ Summer Projects\Translate\social media analysis-2a59d94ba22d.jsonは、このプロジェクト用にGoogleクラウドから提供されたキーを配置するパスです。どうすればこれを解決できますか?.

8
Samrat

GOOGLE_APPLICATION_CREDENTIALSの環境変数を設定する必要がある

これをコードに追加するには、次の行を追加します。

credential_path = "D:\Summer Projects\Translate\social media analysis-2a59d94ba22d.json"
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = credential_path

完全なソリューション:

# Imports the Google Cloud client library

import os    
from google.cloud import translate

credential_path = "D:\Summer Projects\Translate\social media analysis-2a59d94ba22d.json"
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = credential_path

# Instantiates a client
translate_client = translate.Client()

# The text to translate
text = u'Hello, world!'
# The target language
target = 'ru'

# Translates some text into Russian
translation = translate_client.translate(
    text,
    target_language=target)

print(u'Text: {}'.format(text))
print(u'Translation: {}'.format(translation['translatedText']))
6
ScottMcC

現在、ビジョンAPIを扱っています。私の解決策は上記の答えに依存しています。

ただし、Googleのサンプルコードは、以前のコードとは少し異なります。

私のサンプルコードは

def run_quickstart():
    import os
    import io
    from google.cloud import vision
    from google.cloud.vision import types
    ...

    # I made the modification here
    credential_path = "PATH"

    # for example
    # credential_path = "projectname-xxxxxxxx.json"

    # WRONG code
    # credential_path = "~/Downloads/projectname-xxxxxxxx.json"


    os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = credential_path

注意する必要があるのは、JSONファイルを.pyと同じフォルダーに配置することです。
したがって、PATHは実際にはJSONファイルを指す実際のパスではありません
次のように、JSONファイルの名前のみに移動しますprojectname-xxxxxxxx.json

0
Jason Hsu