我在 GAE 中运行最简单的 django 项目时遇到问题。
运行后django-admin startproject myproj
(使用 Google SDK 中的 django 1.4),文件夹层次结构如下所示:
+ myproj(项目的根文件夹) - 管理.py + myproj(项目文件的子文件夹) - __init__.py - 设置.py - urls.py -wsgi.py
然后,我将通常的 app.yaml 添加到根文件夹- 即添加到 manage.py 所在的文件夹。
application: u-pavarotti
version: 1
runtime: python27
api_version: 1
threadsafe: true
libraries:
- name: django
version: "1.4"
builtins:
- django_wsgi: on
syncdb、dbshell、shell ... 效果很好。甚至manage.py runserver
工作文件。但是,尝试运行dev_appserver
失败。我得到的例外是:
ImportError: Could not import settings 'settings'
.
好吧,看看 google/appengine/ext/django/main (它django_wsgi
基本上是为 .* 设置一个 URL 处理程序到 google.appengine.ext.django.main.app)似乎它希望在蟒蛇路径。但是没有做任何事情,要导入的模块是myproj.settings
(因为 myproj 不在路径中)。
现在,将 .../myproj/myproj (较低的文件夹)添加到 PYTHONPATH 可以解决我的开发机器上的所有问题,但是由于我无法控制 GAE 部署上的搜索路径 - 此解决方案将不起作用。
我可以将所有文件,或者只是 settings.py 向上移动到 myproj,或者将 app.yaml 向下移动(有点相同),但它需要对默认生成的 settings.py 进行各种更改 - 我不这是要走的路。或者,我可以编写自己的处理程序,它将实例化 django.core.handlers.wsge.WSGIHandler (旧教程曾经这样做) - 似乎至少违背了 app 的“内置”属性的创建者的意图。 yaml。
我想知道其他人是如何解决这个问题的,什么是正确的做法。