无法从google.cloud导入数据存储区

时间:2017-11-19 15:57:04

标签: python google-cloud-datastore

我正在尝试使用Flask和Google Datastore创建一个基本的网络应用,以便自己使用Google Cloud。但是,当我部署我的应用程序时,我收到错误500,细节是Python无法导入数据存储区:ImportError: No module named cloud

这是我的app.yaml

runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: .*
  script: main.app

libraries:
- name: jinja2
  version: "2.6"
- name: markupsafe
  version: "0.15"
- name: flask
  version: 0.12

我的main.py开头如下:

from __future__ import absolute_import

# Standard imports
import time
import logging
import json
import threading

# Flask framework
from flask import request
from flask import Flask

# Google Cloud features
from google.cloud import datastore
# the following replaces requests
from google.appengine.api import urlfetch

最后,我的requirements.txt如下:

Flask
google-cloud
click

当我部署我的应用程序(使用gcloud app deploy)并访问我的网站时,我收到错误500.

我不明白为什么我不能使用from google.cloud import datastore因为谷歌在他们的教程中所做的事情......我一定会遗漏一些东西,但我找不到。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:4)

来自Installing the client library

pip install --upgrade google-cloud-datastore

您需要的客户端库(以匹配您的导入语句)为google-cloud-datastore,但您的requirements.txt文件中没有列出。

附注:您的app.yaml文件表明您的应用是标准的env GAE应用,您的SDK中已包含优化的Google Datastore NDB Client Library库(如果您还没有)选择通用的具体原因而不是。)

答案 1 :(得分:4)

您没有指定env: flex,因此您使用的是标准环境。 Here描述了flex yaml和here它不会出现在标准yaml上。

这很重要,因为标准环境不支持google-cloud。 google-cloud’s repository

  

这些库目前无法在Google App Engine Standard上运行

Dan Cornilescu提到的有关NDB Client的链接是标准环境的正式解决方案,很少有例子可以在官方文档中找到:

https://github.com/GoogleCloudPlatform/python-docs-samples/tree/master/appengine/standard/ndbhttps://github.com/GoogleCloudPlatform/python-docs-samples/tree/master/appengine/standard/multitenancy