1

ローカル マシンから Google App Engine データストアに接続しようとしています。私は一日中これを掘り下げるのに何の運もありませんでした。

ここでアプローチを試しました(また、GAEで gcloud-python を使用するgcloud で dev_appserver.py を実行できないなど、SOからの他の多くの提案も):

dev_appserver.py の実行時にリモート データストアにアクセスするにはどうすればよいですか?

最初に、Google のこの説明に基づいて gcloud をインストールしました: https://cloud.google.com/appengine/docs/python/tools/using-libraries-python-27

説明によると、appengine_config.py に以下を追加する必要があります。

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

それを行うと、エラーが表示されますImportError: No module named gcloud

次にコードを main.py に移動すると、そこにある lib-folder とモジュールがピックアップされているようです。初期化を確実にするために appengine_config が最初に実行されていると思っていたので、これは少し奇妙に思えます。しかし今、次のスタック トレースを取得しています。

ERROR    2016-09-23 17:22:30,623 cgi.py:122] Traceback (most recent call last):
  File "/Users/thomasd/Documents/github/myapp/main.py", line 10, in <module>
    from gcloud import datastore
  File "/Users/thomasd/Documents/github/myapp/lib/gcloud/__init__.py", line 17, in <module>
    from pkg_resources import get_distribution
  File "/Users/thomasd/Documents/github/myapp/lib/pkg_resources/__init__.py", line 2985, in <module>
    @_call_aside
  File "/Users/thomasd/Documents/github/myapp/lib/pkg_resources/__init__.py", line 2971, in _call_aside
    f(*args, **kwargs)
  File "/Users/thomasd/Documents/github/myapp/lib/pkg_resources/__init__.py", line 3013, in _initialize_master_working_set
    dist.activate(replace=False)
  File "/Users/thomasd/Documents/github/myapp/lib/pkg_resources/__init__.py", line 2544, in activate
    declare_namespace(pkg)
  File "/Users/thomasd/Documents/github/myapp/lib/pkg_resources/__init__.py", line 2118, in declare_namespace
    _handle_ns(packageName, path_item)
  File "/Users/thomasd/Documents/github/myapp/lib/pkg_resources/__init__.py", line 2057, in _handle_ns
    loader.load_module(packageName)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pkgutil.py", line 246, in load_module
    mod = imp.load_module(fullname, self.file, self.filename, self.etc)
  File "/Library/Python/2.7/site-packages/google/cloud/logging/__init__.py", line 18, in <module>
  File "/usr/local/google_appengine/google/appengine/tools/devappserver2/python/sandbox.py", line 999, in load_module
    raise ImportError('No module named %s' % fullname)
ImportError: No module named google.cloud.logging.client

ここで何が間違っていますか?

4

3 に答える 3

-1

私はこのように解決しました: -

1.) プロジェクト パスに lib フォルダーを作成します。

2.) プロジェクト パスからターミナルに次のコマンドを実行して、gcloud ライブラリをインストールします。

    pip install -t lib gcloud

3.) プロジェクトで appengine_config.py モジュールを作成し、次のコード行を追加します。

    import sys
    import os.path
    sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'lib'))

4.) この後、次のようにインポートできます:-

    from gcloud import datastore

5.) ローカルからライブ Google データストアにデータを保存するには:-

    client = datastore.Client("project-id")
    key = client.key('Person')
    entity = datastore.Entity(key=key)
    entity['name'] = ashish
    entity['age'] = 23
    client.put(entity)

プロパティ name と age を持つ Person という名前のエンティティを保存します。正しいプロジェクト ID を指定することを忘れないでください。

于 2016-10-14T11:20:27.823 に答える