我正在尝试使用Flask和Google Datastore创建一个基本的web应用程序,使自己成为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
,因为谷歌在他们的教程中就是这么做的……我一定是遗漏了什么,但我找不到是什么。
任何帮助都将不胜感激。
发布于 2017-11-20 22:11:19
来自Installing the client library
pip install --upgrade google-cloud-datastore
您需要的(与导入语句匹配的)客户端库是google-cloud-datastore
,但是您的requirements.txt
文件中没有列出该库。
附注:你的app.yaml
文件表明你的应用程序是一个标准的env GAE应用程序,为此你有一个优化的Google Datastore NDB Client Library库可用,并且已经包含在你的SDK中(如果你没有具体的理由选择通用的)。
发布于 2017-11-21 00:20:54
您没有指定env: flex
,因此您使用的是标准环境。它被描述为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
https://stackoverflow.com/questions/47378833
复制相似问题