2016-08-06 8 views
1

私はFlask、GAE、およびAPIの使用についてかなり新しいです。私は、GoogleのAPIの1つに接続できる基本的なWebアプリケーションを構築しようとしています。
アプリ-webemotions:
-main.py
-lib

-app.yaml --sentimentanalysisFlask on GAE - Google APIに接続 - JSONファイルを使用できません

マイフォルダ構造は、この(私はメインのファイルにそれを守ってきた)のように見えます。 PY
-static
--credential.json

すべてが働くが、資格証明書のためのJSONファイルを提供しています。私のスクリプトを使用してファイルを要求)app.yamlを
2で私のファイルの宛先にGOOGLE_APPLICATION_CREDENTIALS環境変数を設定
1)(sentimentanalysis.py)

を:私の理解では、それを行うにはいくつかの方法があるということです

残念ながら、私はこれらの作業を行うことができませんでした。

オプション1):

env_variables: 
    GOOGLE_APPLICATION_CREDENTIALS: static/key/credentials.json 

が、私はその後、dev_appserver.pyを通じて私のコードを実行します。app.yamlをで
私はラインを持っています。そして次のエラーを取得:私は私のスクリプトsentimentanalysis.py内のコードの行持っ :

scope = ['https://www.googleapis.com/auth/cloud-platform'] 
    credentials = ServiceAccountCredentials.from_json_keyfile_name('/static/credentials.json', scope) 

をし、コードを実行するときに、私は次のエラーを取得する

ApplicationDefaultCredentialsError: File static/key/credentials.json (pointed by GOOGLE_APPLICATION_CREDENTIALS environment variable) does not exist! 

はオプション2) :

raise IOError(errno.EACCES, 'file not accessible', filename) 
IOError: [Errno 13] file not accessible: '/static/credentials.json' 
INFO  2016-08-06 04:10:51,678 module.py:788] default: "POST /Sentiment-analysis HTTP/1.1" 500 - 

質問:
それは私が使用しているメソッドに関係なく見えるので、私はJSONファイルに正しいパスを提供することができません

私の質問は上記のオプションのいずれかが正しいかどうかを最初に知ることですはい、私は間違って何をしていますか?彼らが正しい選択肢でない場合は、何をお勧めしますか?

謝罪これはすでに

はありがとう...私は今、数時間のための答えを見つけることを試みてきたし、それをクラックすることができていない、頼まれている場合!

+1

コードは、静的なリソースにアクセスすることはできません、ドキュメントの読み取りを持っています。 –

+0

ありがとうTim。まあ、私は文書を読んだり、それ以外の場合は投稿していないでしょう。私はあなたが「静的リソース」とは何を意味しているのかよく分かりません。 CSSやJSファイルなどの静的リソースを持つ静的フォルダがあります。これらはすべて私のアプリケーションでアクセスできますが、JSONファイルだけがアクセスできません。あなたは明確にしていただけますか?ありがとうございました。 – Sylvain

+0

アプリケーションで静的リソースにアクセスできると言うと、実際にはフラスココードでこれらのファイルを明示的に開くか、Webブラウザでこれらのファイルを読み込むことができますか? あなたは明確ではなく、大きな違いがあります。したがって、私の元のコメントです。 私が参照している具体的なドキュメントはhttps://cloud.google.com/appengine/docs/python/config/appref#handlers_elementと "application_readable"ディレクティブです。 おそらくあなたのapp.yaml –

答えて

0

Google App Engineで実行している場合、コードには自動的に必要な資格が与えられます。 GOOGLE_APPLICATION_CREDENTIALSを設定せず、.from_json_keyfile_nameを呼び出しないでください。代わりに、呼び出し:

credentials = GoogleCredentials.get_application_default() 

をここに示されているように:あなたが明示的にそれを許可しない限り、 https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/bigquery/api/getting_started.py

+0

こんにちはJeffrey。ご回答いただきありがとうございます!私は動作するコード内で私のAPI開発者キーを使用して終了しましたが、あなたの提案を試してみます。私はその状況の「資格情報」がGOOGLE_APPLICATION_CREDENTIALSの資格情報を検索し、ファイルを渡すことが必死である理由を前提にしていました。しかし今は感謝しています。 – Sylvain

関連する問題