Cómo resolver "django.core.exceptions.ImproperlyConfigured: las etiquetas de la aplicación no son únicas, duplicados: foo" en Django 1.7?
django-1.7 (7)
Bueno, creé la aplicación de auth
, y la he incluido en INSTALLED_APP
como src.auth
(porque está en la carpeta src
) y obtuve este error, porque también está la aplicación django.contrib.auth
. Así que lo renombré como authentication
y problema resuelto.
Al actualizar a Django 1.7 recibo el siguiente mensaje de error de ./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
¿Cuál es el problema y cómo lo resuelvo?
Como de therefromhere dijo que esta es una nueva feature Django 1.7 que agrega una especie de "registro de aplicación" donde las aplicaciones deben determinarse de manera única (y no solo tener diferentes patches de python).
El atributo de name
es la ruta de Python (única), pero la label
también debe ser única. Por ejemplo, si tienes una aplicación llamada ''admin'', entonces tienes que definir el nombre (nombre = ''python.path'') y una etiqueta que también debe ser única (label = ''my admin'' o como se dice poner la pitón completa camino que siempre es único).
El problema es que con los cambios en las aplicaciones en Django 1.7, se requiere que las aplicaciones tengan una etiqueta única.
De forma predeterminada, la etiqueta de la aplicación es el nombre del paquete, por lo que si tiene un paquete con el mismo nombre que uno de sus módulos de aplicaciones ( foo
en este caso), obtendrá este error.
La solución es anular la etiqueta predeterminada de su aplicación y forzar esta configuración para que se cargue agregándola a __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)
y
# foo/__init__.py
default_app_config = ''full.python.path.to.your.app.foo.apps.FooConfig''
Ver https://docs.djangoproject.com/en/1.7/ref/applications/#for-application-authors
Encontré una solución simple para esto. En mi caso, la línea siguiente se agrega dos veces en INSTALLED_APPS ,
''django.contrib.foo'',
Eliminada una línea soluciona el problema para mí.
Si desea respaldar una versión anterior, comando
pip install django==1.6.7
Tengo el mismo problema. Aquí el nombre de mi aplicación era chat y en settings.py, debajo de las aplicaciones instaladas escribí chat.apps.ChatConfig, mientras que ya incluí el chat de nombre de la aplicación en la parte inferior. Cuando eliminé el problema de la mina chat.apps.ChatConfig se resolvió durante las migraciones. Este error puede deberse a la misma instancia en la que puede haber definido el nombre de su aplicación foo dos veces en settings.py. ¡¡Espero que esto funcione!!
Tuve el mismo error: prueba esto:
en INSTALLED_APPS, si incluye ''foo.apps.FooConfig'', entonces Django ya sabe incluir la aplicación foo en la aplicación, por lo tanto, no es necesario incluir también ''foo''. Tener ambos ''foo'' y ''foo.apps.FooConfig'' en INSTALLED_APPS podría ser la fuente de su problema.