我正在为 Google App Engine 上的导入而苦苦挣扎。我有一个具有以下(标准)设置的 Django/Python 项目:
[myproject]
|
-[myproject]
|
--[app1]
|
--[app2]
第二个[myproject]
目录(我认为)被认为是项目根目录,并且与项目的顶级目录命名相同。这个结构是由 Django 的startproject
命令创建的。
说,我有一个我想MyClass
在其中使用的类。当我使用 GAE SDK 进行本地开发时,我可以:app1.models
app2.models
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 仍然无法找到我的应用程序。
我以为我很好地阅读了谷歌关于 GAE 的文档,但我要么一定错过了这一点,要么它被埋在某个地方......如果一个人想在 GAE 上运行 Django,这非常重要......