gpt4 book ai didi

python - 如何将 python 的谷歌云端点与现有的 GAE 项目集成?

转载 作者:太空宇宙 更新时间:2023-11-03 18:29:14 24 4
gpt4 key购买 nike

当我尝试将 Google Cloud 端点集成到现有项目中时,出现此错误:

 ImportError: No module named endpoints

我已经将端点添加到我的 app.yaml 文件中。端点 api 文件在外部与其自己的 app.yaml 文件一起工作,但在项目目录中运行时会出现错误。为了简单起见,我将所有 api 调用路由到“endpoints_api.py”。也许我错过了一些东西。

这是我的目录设置:

    -project
-handlers
-media
-templates
-webapp2_extras
__init__.py
app.yaml
main.py
endpoints_api.py

这是我的 app.yaml 文件:

    application: project-aplha
version: 1
runtime: python27
api_version: 1
threadsafe: true

handlers:
# Endpoints Api
- url: /_ah/spi/.*
script: endpoints_api.APPLICATION

- url: /favicon\.ico
static_files: media/favicon.ico
upload: media/favicon.ico

- url: /media
static_dir: media

# Main Script
- url: /.*
script: main.APPLICATION

libraries:
- name: endpoints
version: 1.0

- name: webapp2
version: latest

- name: jinja2
version: latest

- name: pycrypto
version: latest

以及处理程序类的示例(如果重要的话):

class SignupHandler(base.BaseHandler):
def get(self):
return self.render_template('sighup.html')

def post(self):
name = self.request.get('name')
email = self.request.get('email')
password = self.request.get('password')

也许还有endpoints_api.py 文件:

import endpoints
from google.appengine.ext import ndb
from protorpc import messages
from protorpc import message_types
from protorpc import remote


class Task(messages.Message):
name = messages.StringField(1, required=True)
owner = messages.StringField(2)

class TaskModel(ndb.Model):
name = ndb.StringProperty(required=True)
owner = ndb.StringProperty()

@endpoints.api(name='tasks', version='v1',
description='API for Task Management')
class TaskApi(remote.Service):

@endpoints.method(Task, Task,
name='task.insert',
path='task',
http_method='POST')
def insert_task(self, request):
TaskModel(name=request.name, owner=request.owner).put()
return request

APPLICATION = endpoints.api_server([TaskApi])

最佳答案

我在 OS X 上使用最新的 AppEngine SDK 1.9.40 时遇到了同样的错误。endpoints 模块不在 Python 模块搜索路径中,因此当您的代码运行 import 时端点,它失败并出现 ImportError。

即使使用 GUI GoogleAppEngineLauncher 运行,该模块也未被引用。

在 OS X 上,该模块位于 /usr/local/google_appengine/lib/endpoints-1.0/endpoints。您可以通过将其添加到 PYTHONPATH 然后从解释器运行 import endpoints 来验证这一点。这应该可以工作,尽管它会失败,因为它有一个对“protorpc”的内部引用。

不幸的是,在命令行上,dev_appserver.py 无法引用 PYTHONPATH,因此您会继续收到以下命令的 ImportError:

dev_appserver.py --datastore_path=datastore.db 。

郑重声明,我将其包含在我的 app.yaml 中:

libraries:
- name: ssl
version: latest
- name: webapp2
version: "2.5.2"
- name: jinja2
version: latest
- name: pycrypto
version: "2.6"
- name: endpoints
version: "1.0"

关于python - 如何将 python 的谷歌云端点与现有的 GAE 项目集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22655806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com