./manage.py теста Django 1.4 дает импорт Thing2Literal, не найденный в Google appengine

64
8

Я выполнил следующие шаги: https://developers.google.com/cloud-sql/docs/django, и он отлично справился с django 1.3.1. Теперь до Django 1.4 и вы получите смешную трассировку стека. Я бы вставлял соответствующую часть сообщения здесь

Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/home/dumb906/woody/py/mdlr/django/core/management/__init__.py", line 443, in execute_from_command_line
utility.execute()
File "/home/dumb906/woody/py/mdlr/django/core/management/__init__.py", line 382, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/dumb906/woody/py/mdlr/django/core/management/__init__.py", line 261, in fetch_command
klass = load_command_class(app_name, subcommand)
File "/home/dumb906/woody/py/mdlr/django/core/management/__init__.py", line 69, in load_command_class
module = import_module('%s.management.commands.%s' % (app_name, name))
File "/home/dumb906/woody/py/mdlr/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/home/dumb906/woody/py/mdlr/django/core/management/commands/test.py", line 7, in <module>
from django.test.utils import get_runner
File "/home/dumb906/woody/py/mdlr/django/test/__init__.py", line 5, in <module>
from django.test.client import Client, RequestFactory
File "/home/dumb906/woody/py/mdlr/django/test/client.py", line 21, in <module>
from django.test import signals
File "/home/dumb906/woody/py/mdlr/django/test/signals.py", line 2, in <module>
from django.db import connections
File "/home/dumb906/woody/py/mdlr/django/db/__init__.py", line 40, in <module>
backend = load_backend(connection.settings_dict['ENGINE'])
File "/home/dumb906/woody/py/mdlr/django/db/__init__.py", line 34, in __getattr__
return getattr(connections[DEFAULT_DB_ALIAS], item)
File "/home/dumb906/woody/py/mdlr/django/db/utils.py", line 92, in __getitem__
backend = load_backend(db['ENGINE'])
File "/home/dumb906/woody/py/mdlr/django/db/utils.py", line 44, in load_backend
raise ImproperlyConfigured(error_msg)
django.core.exceptions.ImproperlyConfigured: 'google.appengine.ext.django.backends.rdbms' isn't an available database backend.
Try using django.db.backends.XXX, where XXX is one of:
'dummy', 'mysql', 'oracle', 'postgresql_psycopg2', 'sqlite3'
Error was: cannot import name Thing2Literal

Любая помощь? Кто-то сказал, что его нужно скомпилировать http://django-irc-logs.com/2012/mar/27/?

спросил(а) 2021-01-19T18:28:57+03:00 6 месяцев, 1 неделя назад
1
Решение
89

Я была такая же проблема. Поскольку проблема связана с импортом Thing2Literal, который используется функцией adapt_datetime_with_timezone_support из django/db/backends/mysql/base.py и в соответствии с этим: https://code.djangoproject.com/changeset/17596/django/trunk/django/db/backends/mysql/base.py, это важно только для объектов datetime, которые обходят слой модели и используются с raw sql. Поэтому я решил, что это не важно для меня, и я немного испортил свой django/db/backends/mysql/base.py: закомментируйте код, который вызывает проблемы (импорт функции Thing2Literal, adapt_datetime_with_timezone_support и строки 83, где вызывается функция). Конечно, я загружаю свой django 1.4, настроенный таким образом, чтобы appengine вместе с моим проектом, и он работает.

Я был бы признателен за отзывы от тех, кто лучше понимает внутренности django, независимо от того, что я сделал, в порядке, полагая, что я вообще не использую raw sql.

ответил(а) 2021-01-19T18:28:57+03:00 6 месяцев, 1 неделя назад
-6

Как вы можете видеть в документации, которую вы связали, Google App Engine поддерживает только Django до версии 1.3 (фактически 1.3.1).

ответил(а) 2021-01-19T18:28:57+03:00 6 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема