2012-03-06 7 views
1

私は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のバグなのか、

答えて

3

私は同じ問題を持っていた、と私は、私は、リモートAPIセッションを開いたら、次の2行を実行することによってそれを解決:

from google.appengine.dist import use_library 
use_library('django', '1.3') 

けれどもが、明確に、それはハックです。それを修正するためにApp Engineのチームを奨励するために、この問題にスターを付けるん:

https://code.google.com/p/googleappengine/issues/detail?id=8716

+0

私よりも良いハック! –

+0

私はさらに私のenv設定パスを設定する必要があると私はそうでなければ私のmain.pyで行うだろうpythonパスへの追加を行う必要があります '輸入sys、os ... os.environ ['DJANGO_SETTINGS_MODULE' ] = 'settings' sys.path.append(os.path.join(os.path.dirname(__ file__)、 'libs')) ' –

+0

app.yamlでDJANGO_SETTINGS_MODULEを設定すると、単純化できます。パスを更新する必要はありません。理由がわからないからです。 libディレクトリに__init__.pyファイルがあることを確認してください。 –

1

はこれを入力してみてください:

import django 
django.VERSION 

Djangoのバージョンを確認するには!私は、実行しているpythonコンソールがdjangoの古いバージョンを持っていると推測しています!

+0

はい、それは0.96を与えます! 'google_appengine/lib'からDjangoをインポートしていますが、そこにはDjango 1.2もあります。どのように正しいDjangoのバージョンがデフォルトでロードされている任意のアイデア? –

+1

次の行でパスをハックすることはできますが、うまくいけば良い方法があります:sys.path.insert(0、 "/ Applications/GoogleAppEngineLauncher.app /.../ google_appengine/lib/django_1_2") –

0

use_library('django', '1.5') 

は今、このエラーがスローされますので、FYI、これはもはや作品:

ValueError: 1.5 is not a supported version for django; supported versions are ['0.96', '1.0', '1.1', '1.2', '1.3'] 

うまくいけば、これは、一時的な問題ですが、私の解決策は削除(名前の変更)です:

C:\Program Files (x86)\Google\google_appengine\lib\django-0.96 

他のものには、適切なバージョンのdjangoが他の問題なしでロードされます。

関連する問題