Подтвердить что ты не робот

Как решить "django.core.exceptions.ImproperlyConfigured: метки приложений не уникальны, дубликаты: foo" в Django 1.7?

При обновлении до Django 1.7 появляется следующее сообщение об ошибке ./manage.py

$ ./manage.py 
Traceback (most recent call last):
  File "./manage.py", line 16, in <module>
    execute_from_command_line(sys.argv)
  File "/home/johnc/.virtualenvs/myproj-django1.7/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 427, in execute_from_command_line
    utility.execute()
  File "/home/johnc/.virtualenvs/myproj-django1.7/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 391, in execute
    django.setup()
  File "/home/johnc/.virtualenvs/myproj-django1.7/local/lib/python2.7/site-packages/django/__init__.py", line 21, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/johnc/.virtualenvs/myproj-django1.7/local/lib/python2.7/site-packages/django/apps/registry.py", line 89, in populate
    "duplicates: %s" % app_config.label)
django.core.exceptions.ImproperlyConfigured: Application labels aren't unique, duplicates: foo

Какая проблема и как ее разрешить?

4b9b3361

Ответ 1

Проблема заключается в том, что при внесении изменений в приложения в Django 1.7 приложения должны иметь уникальный ярлык.

По умолчанию метка приложения - это имя пакета, поэтому, если у вас есть пакет с тем же именем, что и один из модулей вашего приложения (foo в этом случае), вы попадете в эту ошибку.

Решение состоит в том, чтобы переопределить стандартную метку для вашего приложения и заставить эту конфигурацию загружать, добавив ее в __init__.py.

# foo/apps.py

from django.apps import AppConfig

class FooConfig(AppConfig):
    name = 'full.python.path.to.your.app.foo'
    label = 'my.foo'  # <-- this is the important line - change it to anything other than the default, which is the module name ('foo' in this case)

и

# foo/__init__.py

default_app_config = 'full.python.path.to.your.app.foo.apps.FooConfig'

См. https://docs.djangoproject.com/en/1.7/ref/applications/#for-application-authors

Ответ 2

Я нашел для вас простое решение. В моем случае следующая строка добавляется дважды под INSTALLED_APPS,

'django.contrib.foo',

Удаленная одна строка исправляет проблему для меня.

Ответ 3

У меня была такая же ошибка - попробуйте следующее:

в INSTALLED_APPS, если вы включаете 'foo.apps.FooConfig', тогда Django уже знает, чтобы включить приложение foo в приложение, поэтому нет необходимости также включать 'foo'. Наличие как "foo", так и "foo.apps.FooConfig" в файле INSTALLED_APPS может быть источником вашей проблемы.

Ответ 4

Как therefromhere говорится, что это новая функция Django 1.7 которая добавляет своего рода "реестр приложений" , где приложения должны быть определены однозначно (и не только имеют разные шаблоны python).

Атрибут name - это путь к питону (уникальный), но label также должен быть уникальным. Например, если у вас есть приложение с именем "admin", вам нужно определить имя (name= 'python.path') и метку, которая также должна быть уникальной (label = 'my admin' или, как сказано, положить полный путь python, который всегда уникален).

Ответ 5

Ну, я создал приложение auth, и я включил его в INSTALLED_APP как src.auth (потому что он в папке src), и я получил эту ошибку, потому что есть приложение django.contrib.auth. Поэтому я переименовал его как authentication, и проблема была решена.

Ответ 6

enter image description here У меня та же проблема. Здесь моим именем приложения было chat, а в файле settings.py, под установленными приложениями я написал chat.apps.ChatConfig, в то время как я уже включил чат с именем приложения внизу. Когда я удалил chat.apps.ChatConfig, моя проблема была решена во время миграции. Эта ошибка может возникать из-за того же экземпляра, который вы могли дважды определить как имя приложения foo в файле settings.py. Я надеюсь, что это работает !!

Ответ 7

в моем случае в mysite settings.py, в переменной массива INSTALLED_APPS я дважды по ошибке поместил название приложения.

Ответ 8

У меня была почти такая же проблема.

'''File "/Users/apples/.local/share/virtualenvs/ecommerce-pOPGWC06/lib/python3.7/site-packages/django/apps/registry.py", line 95, in populate
"duplicates: %s" % app_config.label)

django.core.exceptions.ImproperlyConfigured: метки приложений не являются уникальными, дубликаты: auth '' '

Я установил Django.contrib.auth дважды. Я удалил один, и он работал хорошо.

Ответ 9

Возникла такая же проблема, прочитал settings.py в корневой папке, удалил все УСТАНОВЛЕННЫЕ ПРИЛОЖЕНИЯ, вызывающие конфликт... работает нормально. Придется переименовывать названия приложений

Ответ 10

Если вы хотите вернуться к старой версии, выполните команду

pip install django==1.6.7