我正在尝试使用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
因为谷歌在他们的教程中所做的事情......我一定会遗漏一些东西,但我找不到。
任何帮助都将不胜感激。
答案 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/ndb和https://github.com/GoogleCloudPlatform/python-docs-samples/tree/master/appengine/standard/multitenancy