Django Mezzanine ImportError: нет модуля с именем приложения

У меня был рабочий мезонинный проект, настроенный с помощью apache и mod_wsgi. Я попытался добавить приложение в проект и перезапустил apache, и вдруг проект выдает ошибку даже после отмены изменений. Получение той же ошибки, когда я пытаюсь запустить проверку python manage.py:

Traceback (most recent call last):
  File "manage.py", line 14, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
    utility.execute()
  File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/lib/python2.7/dist-packages/django/core/management/base.py", line 242, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/usr/lib/python2.7/dist-packages/django/core/management/base.py", line 284, in execute
    self.validate()
  File "/usr/lib/python2.7/dist-packages/django/core/management/base.py", line 310, in validate
    num_errors = get_validation_errors(s, app)
  File "/usr/lib/python2.7/dist-packages/django/core/management/validation.py", line 34, in get_validation_errors
    for (app_name, error) in get_app_errors().items():
  File "/usr/lib/python2.7/dist-packages/django/db/models/loading.py", line 196, in get_app_errors
    self._populate()
  File "/usr/lib/python2.7/dist-packages/django/db/models/loading.py", line 75, in _populate
    self.load_app(app_name, True)
  File "/usr/lib/python2.7/dist-packages/django/db/models/loading.py", line 97, in load_app
    app_module = import_module(app_name)
  File "/usr/lib/python2.7/dist-packages/django/utils/importlib.py", line 40, in import_module
    __import__(name)
  File "/usr/local/lib/python2.7/dist-packages/mezzanine/boot/__init__.py", line 16, in <module>
    from django.apps import apps
ImportError: No module named apps

Путь к django: "/usr/local/lib/python2.7/dist-packages/django", и у него есть папка с именем "apps" и файл "init.py" внутри папки.

Затем я создал совершенно новый мезонинный проект и запустил проверку python manage.py и получил ту же ошибку. Это означает, что ни один мезонинный проект не работает. Я пытался обновить и переустановить django и мезонин, но бесполезно. С другой стороны, простой проект django работает нормально. Кажется, есть какая-то проблема с мезонином. Я рассмотрел другие связанные вопросы, но не смог решить их. Любая помощь приветствуется. Заранее спасибо.


person Utsav Agarwal    schedule 03.08.2016    source источник
comment
Ошибка говорит сама за себя django.apps не имеет модуля apps (у него есть config и registry). Вы должны быть уверены, что хотите импортировать. Возможно это from django.apps import AppConfig.   -  person kapilsdv    schedule 03.08.2016
comment
Спасибо за ответ. Эта строка from django.apps import apps уже существует во многих файлах в мезонинном каталоге. Я даже пытался удалить или изменить эту строку, но файлов слишком много, и ее изменение приводит к другим ошибкам.   -  person Utsav Agarwal    schedule 03.08.2016
comment
@KapilSachdev apps является атрибутом в django/apps/__init__.py, см. это. @OP Какую версию Django вы используете?   -  person knbk    schedule 03.08.2016


Ответы (1)


Вы говорите, что у вас есть папка с именем apps в вашей установке Django, но трассировка показывает, что она выполняет код, который был удален в 1.7, той же версии, которая представила django.apps. Ваша установка, скорее всего, повреждена и содержит файлы разных версий.

Удалите Django из вашей установки Python и полностью удалите папку /usr/local/lib/python2.7/dist-pacakges/django/. Затем переустановите версию Django, совместимую с вашей версией Mezzanine.

Похоже, вы установили Django в свою глобальную установку Python. Это может легко вызвать такие проблемы, когда несколько проектов должны использовать разные версии пакетов Python. Рекомендуется использовать виртуальную среду для управления требованиями к вашим проектам в изолированной среде и предотвращения такие конфликты.

person knbk    schedule 03.08.2016
comment
Благодарю вас. Я удалил django и мезонин, удалил все папки и установил только мезонин, который сам устанавливает все требования, включая django. И, наконец, это сработало. - person Utsav Agarwal; 03.08.2016