1. ホーム
  2. python

[解決済み] ImportError.を防ぐには?No module named oauth2client.client" on Google App Engine?

2022-03-14 06:37:09

質問

エラーが発生しています。

ImportError: OAuth2Client という名前のモジュールがありません

このトピックに関する多くの質問が寄せられ、その多くが未回答であり、Google App Engine SDKからファイルをコピーする解決策を説明した回答が少なくとも1つあることに気づきました。

しかし、この方法は、依存関係がすべて不明確であるため、面倒に思えます。もし oauth2client を実行すると、次のエラーは別のモジュールが足りないというものです。それを修正したら、また別のモジュールが足りない、などなど。

皮肉なことに、Google App Engine SDKから必要なファイルやモジュールがリストアップされ、PyCharmですぐに確認できるのに、スクリプトからはアクセスできないように見えるのです。

というファイルをすべて取り込む良い方法はないでしょうか? oauth2client PythonがApp Engine上で動作するために必要なものですか?

解決方法は?

答えは、ファイル中の"vendor"にあります。

このドキュメントを元に、手っ取り早く解決する方法を見つけました。 https://cloud.google.com/appengine/docs/python/tools/libraries27#vendoring と、この SOアンサー .

  1. 新規に"というフォルダを作成します。 リブ app.yamlファイルと同じフォルダーにあります。(他の名前でも構いません。以下、その名前を使用してください)。

  2. という名前の空のファイルを作成します。 appengine_config.py app.yamlファイルと同じフォルダーにあります。

  3. その appengine_config.py ファイルに2行を追加します。

    from google.appengine.ext import vendor vendor.add('lib')

  4. ターミナルから、そのファイルがあるディレクトリに移動し、以下のコマンドを実行します。

    sudo pip install -t lib google-api-python-client

インポートエラーが消え、すべてのサブ依存モジュールも手に入ります。