GAE 内で最も単純な django プロジェクトを実行する際に問題が発生しました。
実行後django-admin startproject myproj
(Google SDK の django 1.4 を使用)、フォルダー階層は次のようになります。
+ myproj (プロジェクトのルートフォルダー) -manage.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、dbshell、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 をインスタンス化する独自のハンドラーを作成することもできます (古いチュートリアルではこれを行っていました)。これも、少なくともアプリの「組み込み」属性の作成者の意図に反するようです。ヤムル。
他の人がこの問題をどのように解決しているのか、そして何をするのが正しいのだろうか.