GAE: remote_api_shell.py использует неправильную версию Django - PullRequest
1 голос
/ 06 марта 2012

У меня есть приложение Python 2.7 GAE, которое использует Django 1.2.В целом все работает нормально.

Я пытаюсь использовать 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.

Я не знаю почемуздесь используется Django 0,96.Тем более, что я думаю, что Python 2.7 поддерживает только Django 1.2.Вот соответствующие части моего app.yaml:

application: APP
version: prod
runtime: python27
api_version: 1
threadsafe: true

[...]

libraries:
- name: django
  version: "1.2"

Если я закомментирую строку from django.core.validators import email_re, то импорт завершится успешно.

Любая идея, если я делаю что-то неправильно или еслиэто ошибка GAE?

Ответы [ 3 ]

3 голосов
/ 13 мая 2013

У меня была та же проблема, и я решил ее, запустив две строки после открытия сеанса удаленного API:

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

Хотя, очевидно, это хак.Отметьте эту проблему, чтобы побудить команду движка приложения ее исправить:

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

1 голос
/ 06 марта 2012

попробуйте ввести это:

import django
django.VERSION

Чтобы проверить версию Django! Я предполагаю, что консоль python, на которой вы работаете, имеет старую версию django!

0 голосов
/ 19 декабря 2014

К вашему сведению, это больше не работает, потому что

use_library('django', '1.5')

теперь выдает эту ошибку:

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 загружает без каких-либо других проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...