Обновление с Django 1.7.1 до 1.8.2 завершается неудачно
Мое приложение Django 1.7.1 работает нормально. Но я бы хотел перейти на более свежую версию 1.8.2. Я следую инструкциям здесь, которые в основном просто сказать, чтобы сделать pip install -U Django
из моей виртуальной среды.
После того, как я делаю эту строку, я сразу же пытаюсь сделать manage.py
и это терпит неудачу, как показано ниже.
Может кто-нибудь предложить мне, что я должен сделать, чтобы это исправить? Приведенные ниже ошибки выглядят так, как будто они имеют отношение к модулю MPTT. (Я использую версию 0.6.1 MPTT). Обновление до новой версии django-mptt
также идет со своим собственным набором беспорядочных головных болей.
(myVirtualEnv) $ ./manage.py
myVirtualEnv/src/django-cache-machine-origin/caching/invalidation.py:21: RemovedInDjango19Warning: 'get_cache' is deprecated in favor of 'caches'.
cache = get_cache('cache_machine')
myVirtualEnv/lib/python2.7/site-packages/mptt/forms.py:7: RemovedInDjango19Warning: The django.forms.util module has been renamed. Use django.forms.utils instead.
from django.forms.util import ErrorList
Traceback (most recent call last):
File "./manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "myVirtualEnv/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
utility.execute()
File "myVirtualEnv/lib/python2.7/site-packages/django/core/management/__init__.py", line 312, in execute
django.setup()
File "myVirtualEnv/lib/python2.7/site-packages/django/__init__.py", line 18, in setup
apps.populate(settings.INSTALLED_APPS)
File "myVirtualEnv/lib/python2.7/site-packages/django/apps/registry.py", line 108, in populate
app_config.import_models(all_models)
File "myVirtualEnv/lib/python2.7/site-packages/django/apps/config.py", line 198, in import_models
self.models_module = import_module(models_module_name)
File "/usr/local/Cellar/python/2.7.8_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "myProject/myApp1/models.py", line 5, in <module>
from categories.models import Category
File "myProject/myApp2/models.py", line 22, in <module>
class Category(CachingMixin, MPTTModel):
File "myVirtualEnv/lib/python2.7/site-packages/mptt/models.py", line 244, in __new__
cls = meta.register(cls)
File "myVirtualEnv/lib/python2.7/site-packages/mptt/models.py", line 338, in register
tree_manager.init_from_model(cls)
File "myVirtualEnv/lib/python2.7/site-packages/mptt/managers.py", line 52, in init_from_model
[tree_field] = [fld for fld in model._meta.get_fields_with_model() if fld[0].name == self.tree_id_attr]
File "myVirtualEnv/lib/python2.7/site-packages/django/db/models/options.py", line 56, in wrapper
return fn(*args, **kwargs)
File "myVirtualEnv/lib/python2.7/site-packages/django/db/models/options.py", line 432, in get_fields_with_model
return [self._map_model(f) for f in self.get_fields()]
File "myVirtualEnv/lib/python2.7/site-packages/django/db/models/options.py", line 740, in get_fields
return self._get_fields(include_parents=include_parents, include_hidden=include_hidden)
File "myVirtualEnv/lib/python2.7/site-packages/django/db/models/options.py", line 802, in _get_fields
all_fields = self._relation_tree
File "myVirtualEnv/lib/python2.7/site-packages/django/utils/functional.py", line 60, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "myVirtualEnv/lib/python2.7/site-packages/django/db/models/options.py", line 709, in _relation_tree
return self._populate_directed_relation_graph()
File "myVirtualEnv/lib/python2.7/site-packages/django/db/models/options.py", line 681, in _populate_directed_relation_graph
all_models = self.apps.get_models(include_auto_created=True)
File "myVirtualEnv/lib/python2.7/site-packages/django/utils/lru_cache.py", line 101, in wrapper
result = user_function(*args, **kwds)
File "myVirtualEnv/lib/python2.7/site-packages/django/apps/registry.py", line 168, in get_models
self.check_models_ready()
File "myVirtualEnv/lib/python2.7/site-packages/django/apps/registry.py", line 131, in check_models_ready
raise AppRegistryNotReady("Models aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.
2 ответа
Я ненавижу быть носителем плохих новостей, но вы столкнулись с тем, что является одним из самых адских моментов разработки с Django: попытка привести все ваши зависимости к правильной версии для работы друг с другом. Это не редкость, когда конкретная версия зависимости зависит от конкретных версий Django.
mptt не поддерживает Django 1.8 до версии 0.70 (см. примечания по обновлению: http://django-mptt.github.io/django-mptt/upgrade.html). Так что если вы хотите Django 1.8, вам сначала нужно обновить mptt. Сожалею.
У меня недостаточно прав для комментариев, но вы можете попробовать, если ответ из этого поста поможет вашей проблеме.