【问题标题】:Cannot get gcloud to work with Python and Pycharm无法让 gcloud 与 Python 和 Pycharm 一起使用
【发布时间】:2017-02-01 15:34:58
【问题描述】:

我正在尝试从我的本地计算机连接到 Google App Engine 数据存储区。我花了一整天的时间来研究这个,没有任何运气。

我已经尝试过这里的方法(以及来自 SO 的许多其他建议,例如 Using gcloud-python in GAEUnable to run dev_appserver.py with gcloud):

How to access a remote datastore when running 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 文件夹和那里的模块。这对我来说似乎有点奇怪,因为我认为 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

我在这里做错了什么?

【问题讨论】:

    标签: python google-app-engine gcloud-python google-cloud-python


    【解决方案1】:

    google-cloud 库是 not working on App Engine,很可能您甚至不必这样做,因为您可以使用内置功能。

    official docs 你可以这样使用它:

    import cloudstorage as gcs
    

    【讨论】:

      【解决方案2】:

      我是这样解决的:-

      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 的实体,该实体具有 name 和 age 属性。不要忘记指定正确的项目 ID。

      【讨论】:

        【解决方案3】:

        老问题,但这可能值得包括:

        我不确定您的 requirements.txt 文件的状态,但我浏览了一下我的文件,发现 setuptools 不包括

        pip freeze 不导出 setuptools related question

        假设您按照教程进行操作,您可能会将这些库除了 setuptools 安装到 lib

        我将 setuptools=={verionnumber} 添加到 requirements.txt 并为我解决了这个相关问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-11-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-07-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多