我在GAE中运行最简单的django项目时遇到了问题。
运行django-admin startproject myproj
后(使用Google SDK中的django 1.4),文件夹层次结构显示为:
+ myproj (root folder of project) - manage.py + myproj (a sub folder for the project files) - __init__.py - settings.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
基本上是为。*设置了google.appengine.ext.django.main.app的URL处理程序)它期望在python路径中找到设置。但是没有做任何事情,要导入的模块是myproj.settings
(因为myproj不在路径中)。
现在,将... / myproj / myproj(下层文件夹)添加到PYTHONPATH解决了我的开发机器上的所有内容,但由于我无法控制GAE部署的搜索路径 - 此解决方案无效。
我可以移动所有文件,或者只是将settings.py移动到上层myproj,或者移动app.yaml(有点相同),但它需要从默认的genereated settings.py进行各种更改 - 我不会这是要走的路。或者,我可以编写自己的处理程序,它将实例化django.core.handlers.wsge.WSGIHandler(用于执行此操作的旧教程) - 再次,似乎违背了app的'builtin'属性的创建者的意图。 YAML。
我想知道其他人是如何解决这个问题的,以及做什么是正确的。
答案 0 :(得分:3)
您可以在app.yaml中声明环境变量DJANGO_SETTINGS_MODULE
:
env_variables:
DJANGO_SETTINGS_MODULE: 'myproj.settings'