3

ですから、皆さんがこの質問を何百万回も聞かれていることは知っています。私はそれらすべてを読んだと思います. Django polls アプリ (django チュートリアルで作成したもの) を Google クラウド SQL を使用して Google アプリ エンジンで実行するように変換しようとすると、DJANGO_SETTINGS_MODULE is undefined エラーが発生します。

これは、Google アプリ エンジン ログから得られた実際のスタック トレースです。

Traceback (most recent call last):
  File "/base/python27_runtime/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 223, in Handle 
    result = handler(dict(self._environ), self._StartResponse)
  File "/base/python27_runtime/python27_lib/versions/third_party/django-1.4/django/core/handlers/wsgi.py", line 219, in __call__
    self.load_middleware()
  File "/base/python27_runtime/python27_lib/versions/third_party/django-1.4/django/core/handlers/base.py", line 39, in load_middleware
    for middleware_path in settings.MIDDLEWARE_CLASSES:
  File "/base/python27_runtime/python27_lib/versions/third_party/django-1.4/django/utils/functional.py", line 184, in inner
    self._setup()
  File "/base/python27_runtime/python27_lib/versions/third_party/django-1.4/django/conf/__init__.py", line 40, in _setup
    raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE)
  ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.

Google アプリエンジンで提供されている dev_appserver.py で実行しようとすると同じエラーが発生しましたが、追加することで問題を解決できました

  env_variables:
    DJANGO_SETTINGS_MODULE: 'DjangoTut.settings'

app.yaml ファイルに。

私のプロジェクトディレクトリは次のようになります:

  • ジャンゴツット
    • ジャンゴツット
      • 初期化.py
      • 設定.py
      • urls.py
      • wsgi.py
    • 世論調査
      • 初期化.py
      • admin.py
      • models.py
      • tests.py
      • urls.py
      • ビュー.py
    • app.yaml
    • 管理.py

私のapp.yamlファイルは次のようになります

   application: hochotime
   version: 10
   runtime: python27
   api_version: 1
   threadsafe: true


   libraries:
   - name: django
     version: "1.4"

   builtins:
   - django_wsgi: on

   env_variables:
     DJANGO_SETTINGS_MODULE: 'settings'

他のすべてのファイルは、ここで提案されているものと同じですhttps://docs.djangoproject.com/en/1.4/intro/tutorial01/

追加してみました

    import os
    os.environ['DJANGO_SETTINGS_MODULE'] = 'DjangoTut.settings'

ほぼすべての単一のpythonファイルの先頭までですが、役に立ちません。設定ファイルをアプリディレクトリではなくプロジェクトディレクトリに移動し、すべてos.environ['DJANGO_SETTINGS_MODULE']を「設定」だけを指すように変更しようとしました。ここに示すように、設定を直接構成しようとしましたhttps://docs.djangoproject.com/en/dev/topics/settings/#using-settings-without-setting-django-settings-moduleそれでも、同じ結果が得られますGoogle サーバーで実行しようとするたびにエラーが発生します。

どんな助けでも大歓迎です。

4

1 に答える 1

1

Django-nonrelを使用していますか? そうでない場合は、このappengine 記事をご覧ください。

settings.py を app.yaml と同じディレクトリに移動してみます。app.yaml から env_variables を削除すると、動作するためにそれらは必要ありません。ただし、まだハンドラーを定義していない場合は定義する必要があります (app.yaml 全体をリストしたかどうか不明)。

  handlers:
- url: /static
  static_dir: static

- url: /.*
  script: main.py

環境設定は、上記の Google の記事に示されているように、セットアップした wsgi ハンドラー (この例では main.py) にある必要があります。

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

これにより、正しい道を進むことができます。

于 2012-12-12T00:46:25.140 に答える