【问题标题】:location of settings.py for django project hosted in Google App Engine托管在 Google App Engine 中的 django 项目的 settings.py 的位置
【发布时间】:2013-03-30 12:05:51
【问题描述】:

我在 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)似乎是期望在 python 路径中找到设置。但是什么都不做,要导入的模块是myproj.settings(因为 myproj 不在路径中)。

现在,将 .../myproj/myproj(下层文件夹)添加到 PYTHONPATH 可以解决我的开发机器上的所有问题,但由于我无法控制 GAE 部署中的搜索路径 - 此解决方案将无法正常工作。

我可以移动所有文件,或者只是将 settings.py 上移到 myproj 上,或者将 app.yaml 下移(有点相同),但它需要对默认生成的 settings.py 进行各种更改 - 而我不需要这是要走的路。或者,我可以编写自己的处理程序,它将实例化 django.core.handlers.wsge.WSGIHandler (旧教程曾经这样做) - 似乎至少违背了 app 的“内置”属性的创建者的意图。 yaml。

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

【问题讨论】:

    标签: django google-app-engine


    【解决方案1】:

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

    env_variables:
        DJANGO_SETTINGS_MODULE: 'myproj.settings'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-11
      • 2021-02-25
      • 1970-01-01
      • 2018-01-11
      • 2012-04-09
      • 2010-09-08
      相关资源
      最近更新 更多