私はDjango 1.2を使用するPython 2.7 GAEアプリケーションを持っています。すべてが一般的にうまくいきます。GAE:remote_api_shell.pyが間違ったDjangoバージョンを使用します
私はremote_api_shell.py
を使用しようとしているが、私は私のmodels.py
をインポートするとき、私はこのエラーを取得:
$ PYTHONPATH=.; remote_api_shell.py APP
App Engine remote_api shell
Python 2.7.2 (v2.7.2:8527427914a2, Jun 11 2011, 15:22:34)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]
The db, users, urlfetch, and memcache modules are imported.
s~APP> import models
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Users/.../models.py", line 8, in <module>
from django.core.validators import email_re
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/django_0_96/django/core/validators.py", line 13, in <module>
from django.utils.translation import gettext, gettext_lazy, ngettext
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/django_0_96/django/utils/translation/__init__.py", line 3, in <module>
if settings.USE_I18N:
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/django_0_96/django/conf/__init__.py", line 28, in __getattr__
self._import_settings()
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/django_0_96/django/conf/__init__.py", line 53, in _import_settings
raise EnvironmentError, "Environment variable %s is undefined." % ENVIRONMENT_VARIABLE
EnvironmentError: Environment variable DJANGO_SETTINGS_MODULE is undefined.
それがここに0.96を使用している理由を私は知りません。特にPython 2.7はDjango 1.2しかサポートしていないと思うので、ここに私のapp.yaml
の関連部分は、以下のとおりです。私はfrom django.core.validators import email_re
行をコメントアウトした場合
application: APP
version: prod
runtime: python27
api_version: 1
threadsafe: true
[...]
libraries:
- name: django
version: "1.2"
は、インポートが成功しました。
私が何か間違っているのか、これがGAEのバグなのか、
私よりも良いハック! –
私はさらに私のenv設定パスを設定する必要があると私はそうでなければ私のmain.pyで行うだろうpythonパスへの追加を行う必要があります '輸入sys、os ... os.environ ['DJANGO_SETTINGS_MODULE' ] = 'settings' sys.path.append(os.path.join(os.path.dirname(__ file__)、 'libs')) ' –
app.yamlでDJANGO_SETTINGS_MODULEを設定すると、単純化できます。パスを更新する必要はありません。理由がわからないからです。 libディレクトリに__init__.pyファイルがあることを確認してください。 –