web-dev-qa-db-ja.com

Google APIを使用するには、PythonプロジェクトでGOOGLE_APPLICATION_CREDENTIALSを設定します

私はプログラミング初心者であり、Pythonでgoogle APIを使用する方法を学びます。

私は持っています:

  1. google Cloudでプロジェクトを作成し、使用するAPIであるNatural Language APIを有効にしました。
  2. 資格情報を作成し、資格情報JSONファイルをダウンロードし、apikey.JSONとして保存しました
  3. ターミナルで次のコマンドを実行しました:GOOGLE_APPLICATION_CREDENTIALS = apikey.JSONをエクスポートします。エラーは表示されません。

ただし、このために最も単純なコードを実行した場合でも、クレデンシャル変数が見つからないというエラーが発生します。

今何をすべきかわかりません。親切に助けてください。

これは私のコードです:

from google.cloud import language

def sentiment_text(text):

    client = language.LanguageServiceClient()

    sentiment = client.analyze_sentiment(text).document_sentiment

    print('Score: {}'.format(sentiment.score))
    print('Magnitude: {}'.format(sentiment.magnitude))

sampletxt='Python is great'

sentiment_text(sampletxt)

そしてエラーがあります:

トレースバック(最後の最後の呼び出し):ファイル「/Users/YELI1/Downloads/googlecloud/sentimentanalysis/simple.py」、21行目、sentiment_text(sampletxt)

ファイル「/Users/YELI1/Downloads/googlecloud/sentimentanalysis/simple.py」、5行目、sentiment_text client = language.LanguageServiceClient()

ファイル「/usr/local/lib/python3.6/site-packages/google/cloud/gapic/language/v1/language_service_client.py」、147行目、initssl_credentials = ssl_credentials)

Create_stubのファイル「/usr/local/lib/python3.6/site-packages/google/gax/grpc.py」の106行目

credentials = _grpc_google_auth.get_default_credentials(scopes)   File

「/usr/local/lib/python3.6/site-packages/google/gax/_grpc_google_auth.py」、62行目、get_default_credentials認証情報、_ = google.auth.default(scopes = scopes)

ファイル「/usr/local/lib/python3.6/site-packages/google/auth/_default.py」、行282、デフォルト

raise exceptions.DefaultCredentialsError(_HELP_MESSAGE) google.auth.exceptions.DefaultCredentialsError: Could not

資格情報を自動的に決定します。 GOOGLE_APPLICATION_CREDENTIALSを設定するか、資格情報を明示的に作成してアプリケーションを再実行してください。詳細については、 https://developers.google.com/accounts/docs/application-default-credentials をご覧ください。

import os 
print(os.environ['GOOGLE_APPLICATION_CREDENTIALS']) 

出力トレースバック(最新の呼び出しが最後):

  File "/Users/YELI1/Downloads/googlecloud/sentimentanalysis/simple‌​.py", line 2, in <module>  
print(os.environ['GOOGLE_APPLICATION_CREDENTIALS']) 
   File "/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework‌​/Versions/3.6/lib/py‌​thon3.6/os.py", line 669, in getitem  
raise KeyError(key) from None KeyError: 'GOOGLE_APPLICATION_CREDENTIALS'
22
Liam

Jupyterノートブックで作業していて、PythonコードでGOOGLE_APPLICATION_CREDENTIALS環境変数を設定する場合:

import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="/path/to/file.json"
89
Marius

この投稿には回答があったことは知っていますが、以下はGOOGLE_APPLICATION_CREDENTIALS変数を指定するよりクリーンな方法です。

client = language.LanguageServiceClient.from_service_account_json("/path/to/file.json")
5
sdikby

これをテストするもう1つの方法は、ターミナルに移動して次のように入力することです。

# Linux/Unix
set | grep GOOGLE_APPLICATION_CREDENTIALS 

または

# Windows:
set | Select-String -Pattern GOOGLE_APPLICATION_CREDENTIALS 

これにより、環境変数とそれが置かれているパスが表示されます。これが何も返さない場合は、変数を設定していないか、間違ったパスが設定されている可能性があります

1
seanbrhn3

以下に示すように、資格情報を明示的に言及し、クライアントに渡すことで、より簡単に機能させる方法が1つあります。

    import os
    from google.oauth2 import service_account

    credentials = service_account.Credentials.from_service_account_file("your-json- 
    file-path-with-filename.json")
    client = language.LanguageServiceClient(credentials=credentials)
0
rishi jain