5

main.py GAEアプリケーションをテストするときにこのエラーが発生します:

Traceback (most recent call last):
  File "main.py", line 4, in <module>
    from google.appengine.ext import db
ImportError: No module named google.appengine.ext

私はそれについてたくさん読みましたが、答えを見つけることができません...何かアイデアや助けはありますか?君たちありがとう!!

4

5 に答える 5

9

アプリをテストするときに同じ問題が発生しました。/usr/local/google_appenginepython モジュールが含まれていることがわかったgoogleので、そのパスを$PYTHONPATH環境変数に追加しました。これは 2 つの方法で行うことができます。

  1. コンソールに と入力しexport PYTHONPATH="$PYTHONPATH:/usr/local/google_appengine"ます。これにより、このコンソール セッションの PYTHONPATH に追加されます。

  2. シェル プロファイル ファイル (おそらく~/.bash_profile) に、次のような行を追加します。

    export PYTHONPATH="$PYTHONPATH:/usr/local/google_appengine"
    

    次に、新しいコンソール セッションを開くか、プロファイルをリロードしますsource ~/.bash_profile(またはファイルが何であれ)。

a)「google_appengine」フォルダーが別の場所にある(ではない/usr/local)ため、これを変更する必要がある場合があります。または、b)OSがパスを別の方法で分離している(Windowsでは;代わりに使用していると思います:-私はMacを使用しています)

于 2013-09-26T04:11:40.253 に答える
7

私が直面したケースを追加したいと思います。私のOSはMACです。

Google App Engine は の下にリンクを作成します/usr/local/google_appengine

上記のパスを に追加しましたがPYTHONPATH、まだ機能しません。いくつかのトレイルの後、私もgoogleの開発中のprotobufをインストールしたことがわかりました。確認してください

https://developers.google.com/protocol-buffers/docs/pythontutorial

という名前のフォルダーside_packagesも作成されますgoogle。したがって、しようとするとimport google、実際にはprotobufをインポートしています。

したがって、これに対する解決策の 1 つは、protobufを一時的にアンインストールすることです。

pip uninstall protobuf

于 2015-07-20T15:13:11.533 に答える
5

/google_appengine問題は、常に正しい場所にあるとは限らないディレクトリから発生しているように思われるため、python はそれを見つけることができません (経由でPYTHONPATH)。

  1. 次のコマンドを実行して、google_appengine ディレクトリの場所を見つけます。

    find / -name google_appengine -type d

  2. 見つかったら (例: : /usr/lib/google-cloud-sdk/platform/google_appengine)、次を実行します。

    export PYTHONPATH=:/usr/lib/google-cloud-sdk/platform/google_appengine

これで私の問題は解決しました。

于 2016-11-09T11:04:36.233 に答える
2

それは答えではありませんが、デバッグするために次のコードを追加してみてください。

import logging

import google

logging.info("google path: {}.".format(google.__file__))

このパスをAppEngineSDKの場所と比較します。

于 2013-03-24T01:48:12.150 に答える
1

次のコードは、すべての google python lib パスを出力します

import google
print "google path: {}.".format(google.__path__)

私のマシンでコードを実行すると、これが出力されます

Google パス: ['/usr/local/Cellar/protobuf/2.6.1/libexec/lib/python2.7/site-packages/google', '/usr/local/Cellar/python/2.7.11/Frameworks/Python .framework/Versions/2.7/lib/python2.7/site-packages/google'].

これは、Google appengine のインストール ディレクトリを探すこととは異なります。私の Mac では、インストーラーがシンボリック リンクを作成します。

/usr/local/google_appengine

単体テストを行う場合は、おそらくコードにパスを追加する必要があります

import sys
sys.path.insert(1, '/usr/local/google_appengine')
sys.path.insert(1, '/usr/local/google_appengine/lib/yaml/lib')
于 2016-01-04T11:16:56.270 に答える