我有一个应用程序分为5个模块(参见我漂亮的ascii艺术)每个都有自己的目录,就像this结构
AppEngine App <--Here's the dispatch.yaml
---------------------
| | | | |
| | | | |
Mod1 Mod2 Mod3 Mod4 Mod5
^ ^
\__Here's the models |__ Here i wanna read the models
.py file
with the __init__.py
NDB模型在一个模块中定义(mod1通过示例),我想读取Mod5中的一些数据,官方文档说这是可能的,但我无法做到。我以这种方式导入模型
#this is in mod5 py file
import Mod1.models # No module named Mod1.models
from Path.Mod1 import models #No module named Path.Mod1
from Mod1 import models #No module named Mod1
from Mod1.models import specific_model #No module named Mod1.models
from Path.models import specific_model #No module named Path.models
我将--storage_path设置更改为每个模块,以便能够在启动器中同时运行所有模块,我认为这可能是问题所在。但是如果我离开同一个目录,那么如何同时运行所有模块(我得到了#34; OperationalError:数据库被锁定&#34;错误) 这里有任何线索吗?
答案 0 :(得分:2)
根据this answer from google cloud support,有3种方式。
答案 1 :(得分:1)
根据给定的信息,我想知道您是否遗漏了每个子目录中的__init__.py
文件。这将允许Python模块在这些directorie中使用。见https://docs.python.org/2/tutorial/modules.html#packages
你能在目录中共享文件结构吗?
答案 2 :(得分:1)
我找到了答案,不理想,但有效。
如果我克隆(AKA复制粘贴)Mod5文件夹中的models.py文件并删除--storage_path设置(db在开发服务器的同一temp文件夹中共享),我可以读取存储的数据。
显然,模型需要在每次更改时同步,但至少我可以在我的代码中继续前进
目录结构保持如下:
-- Main (with the dispatch.yaml)
|__ Mod1
| |__ model.py
| |__ app.yaml
| |__ specificMod1Code.py
| |______ Templates
| |______ js
| |______ css
| |______ img
:
:
:
|__ Mod5
|__ model.py #equal that mod1
|__ app.yaml #with the mod5 instace and stuff
|__ specificMod5Code.py
|______ Templates
|______ js
|______ css
|______ img
要在同一时间运行所有模块,必须在应用程序的根目录中运行dev_appserver命令(source)
python dev_appserver.py mod1\app.yaml mod2\app.yaml mod3\app.yaml mod4\app.yaml mod5\app.yaml
此网址中的Runnind
MOD1 =&GT;本地主机:8080
的Mod2 =&GT;本地主机:8081
MOD3 =&GT;本地主机:8082
MOD4 =&GT;本地主机:8083
MOD5 =&GT;本地主机:8084