如何在Google App Engine中正确实现多个模块的多个版本?

Mar*_*man 5 python google-app-engine flask

我一直在尝试创建一个包含各种模块的Google App Engine项目,每个模块都有各种版本; 但我无法让它发挥作用.

我浏览了谷歌模块指南网站上的所有内容,但他们对应用程序层次结构的描述非常模糊.我下载了一个简单的测试应用程序,看看它是如何工作的(我无法开始工作).

这是应用程序的结构:http: //www.iteratorium.eu/stackoverflow/structure.jpg

整个事情都在这里压缩:http: //www.iteratorium.eu/stackoverflow/flask_app.zip

有三个模块:默认模块,my-module和mobile-frontend,my-module和mobile-frontend在目录v_one和v_two中都有两个版本.每个版本都有自己的.yaml文件,其中包含一个处理程序(为了测试目的而保持简单)

结构至少是否正确?当我通过dev_appserver.py文件加载应用程序时,只要我没有加载同一模块的两个版本,一切都很好.在这种情况下,发生这种情况:

me@MY_COMPUTER:~/flask_app$ python ~/google_appengine/dev_appserver.py dispatch.yaml app.yaml mobile-frontend/v_one/mobile-frontend.yaml my-module/v_one/my-module.yaml my-module/v_two/my-module.yaml
Run Code Online (Sandbox Code Playgroud)

回溯结果如下:

google.appengine.tools.devappserver2.errors.InvalidAppConfigError: Duplicate module: my-module
Run Code Online (Sandbox Code Playgroud)

(两个版本都通过appcfg.py上传到appengine而没有任何错误,可能只有localhost服务器无法处理多个版本)

如果我只加载每个模块的一个版本,一切正常,但模块无法从lib目录导入任何内容.http://localhost:8082/mobiler通过浏览器访问会导致终端:

from flask import Flask
ImportError: No module named flask
Run Code Online (Sandbox Code Playgroud)

我在appengine_config.py文件中定义了lib文件夹的路径,但它似乎不适用于模块.这就是我停下来并决定来到这里的地方,因为我甚至不确定结构是否正确,我可能会对此完全消失.

那么......我有多远?

小智 0

也许您在 中做得有点太多appengine_config.py,请尝试将其减少为:

import sys

sys.path.insert(0, 'lib')
Run Code Online (Sandbox Code Playgroud)