适用于Google App Engine中托管的django项目的settings.py的位置

时间:2013-04-08 12:04:19

标签: django google-app-engine

我在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,dbshel​​l,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。

我想知道其他人是如何解决这个问题的,以及做什么是正确的。

1 个答案:

答案 0 :(得分:3)

您可以在app.yaml中声明环境变量DJANGO_SETTINGS_MODULE

env_variables:
    DJANGO_SETTINGS_MODULE: 'myproj.settings'