1

我正嘗試從本地機器連接到Google App Engine數據存儲區。我花了整整一天的時間,沒有任何運氣。無法讓gcloud與Python和Pycharm一起使用

我已經試過這裏的方法(以及很多從SO如Using gcloud-python in GAEUnable to run dev_appserver.py with gcloud其他建議):根據這個描述從谷歌

How to access a remote datastore when running dev_appserver.py?

我第一次安裝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文件夾,並在那裏的模塊。這對我來說似乎有些奇怪,因爲我認爲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 

我在做什麼錯在這裏?

回答

0

我這種方式解決它: -

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)要將數據從本地保存到實時谷歌數據存儲中: -

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

它將保存名爲Person的實體具有屬性名稱和年齡。不要忘記指定正確的項目ID。

0

老問題,但是這可能是值得包括:

我不確定你requirements.txt文件的狀態,但我湊雷了一下,發現setuptools的沒有被列入

pip freeze不出口setuptools的related question

假設你在介紹之後,你可能會安裝這些庫除了setuptools的LIB

我加setuptools的== {} verionnumber到requirements.txt和固定對我來說這個相關的問題。