1

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

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

4

1 回答 1

3

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

env_variables:
    DJANGO_SETTINGS_MODULE: 'myproj.settings'
于 2013-04-08T12:37:29.107 回答