【发布时间】:2013-02-20 13:10:40
【问题描述】:
我在 Google App Engine 上的导入方面遇到了困难。我有一个具有以下(标准)设置的 Django/Python 项目:
[myproject]
|
-[myproject]
|
--[app1]
|
--[app2]
第二个[myproject] 目录(我认为)被认为是项目根目录,并且与项目的顶级目录命名相同。这个结构是由 Django 的startproject 命令创建的。
说,我在app1.models 中有一个类MyClass,我想在app2.models 中使用它。当我使用 GAE SDK 进行本地开发时,我可以这样做:
from app1.models import MyClass
但是,当我部署到 Google App Engine 时,我需要将导入改写为:
from myproject.app.models import MyClass
否则 GAE 将找不到该类并因错误而中止。另外,在我的settings.py 中,我可以在本地将INSTALLED_APPS 引用为:
'app1',
'app2',
...
对于 GAE 我需要做的:
'myproject.app1',
'myproject.app2',
...
对于本地开发,两种方法都有效。部署到 GAE 时,只有使用完整路径名的方法才有效。这是为什么呢??
--
编辑:
我尝试了 lucernia 提供的答案,但遇到了各种问题。主要的绊脚石是部署到 GAE 时,当 app.yaml 不在尝试部署的结构的根目录中时,它将无法运行。
我尝试了 Lipis 提到的答案,效果很好。我必须添加以下几行:
import sys
sys.path.insert(1, 'myproject')
致我的main.py 和settings.py。仅将其添加到 main.py 是不够的。 GAE 仍然无法找到我的应用程序。
我认为我很好地阅读了 Google 的 GAE 文档,但我要么错过了这一点,要么它被埋在某个地方......如果想要在 GAE 上运行 Django,这非常重要......
【问题讨论】:
-
参考这个答案,你很可能会知道该怎么做:stackoverflow.com/a/14851686/8418
标签: python django google-app-engine