如何解决" django.core.exceptions.ImproperlyConfigured:应用程序标签不是唯一的,重复的:foo"在Django 1.7?

时间:2014-06-20 03:40:19

标签: django 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

问题是什么,如何解决?

18 个答案:

答案 0 :(得分:74)

问题是,随着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

答案 1 :(得分:52)

我找到了简单的解决方案。在我的情况下,在 INSTALLED_APPS

下添加两行后续行
'django.contrib.foo',

删除了一行为我解决了这个问题。

答案 2 :(得分:8)

我有同样的错误 - 试试这个:

在INSTALLED_APPS中,如果你包含了foo.apps.FooConfig&#39;,那么Django已经知道在应用程序中包含foo应用程序,因此没有必要同时包含&#39; foo&# 39 ;.同时拥有两个&#39; foo&#39;和&#39; foo.apps.FooConfig&#39;在INSTALLED_APPS下可能是你问题的根源。

答案 3 :(得分:3)

正如therefromhere所说这是一个新的Django 1.7 feature,它增加了一种“应用程序注册表”,其中应用程序必须唯一确定(并且不仅具有不同的python pathes)。

name 属性是python路径(唯一),但 label 也应该是唯一的。例如,如果你有一个名为'admin'的应用程序,那么你必须定义名称(name ='python.path')和一个必须也是唯一的标签(label ='my admin'或者说是完整的python路径总是独一无二的。)

答案 4 :(得分:3)

请检查是否在settings.py的INSTALLED_APPS中重复了什么

答案 5 :(得分:1)

好吧,我创建了auth个应用,并且已经将它包含在INSTALLED_APP src.auth中(因为它位于src文件夹中)并且我收到此错误,因为还有django.contrib.auth个应用。所以我将其重命名为authentication,问题解决了。

答案 6 :(得分:1)

enter image description here 我遇到了同样的问题。 这里我的应用程序名称是聊天,在settings.py中,在已安装的应用程序下,我已经编写了chat.apps.ChatConfig,而我已经在底部包含了应用程序名称聊天。当我删除chat.apps.ChatConfig时,我的问题在迁移时得到了解决。此错误可能是由于您在settings.py中为应用程序名称foo定义了两次的相同实例。我希望这可以解决!!

答案 7 :(得分:1)

基本上,此问题是由于设置中已安装的应用程序名称重复而造成的:

这是我解决问题的方法: 在settings.py文件中:

Check the install app in the setting.py if the install app are duplicate Error shown due to duplication of app name

Remove the duplicate name in the install file After problem is resolved, you will see interface in your screen

为此,我将应用程序名称创建为民意调查,而不是foo

答案 8 :(得分:1)

需要签入两个文件

1- apps.py

编码类似

from django.apps import AppConfig
from django.utils.translation import ugettext_lazy as _
class ModuleConfig(AppConfig):
    name = "ocb.module_name"
    verbose_name = _("Module Name")

2- init .py 像

这样的代码
default_app_config = "ocb.users.apps.ModuleConfig"

default_app_config指向您的apps.py的类名

答案 9 :(得分:1)

在之前的answer 'django.contrib.foo',中,但基本上两次添加任何应用程序都会导致此错误,只需删除一个(Django 3.0)

对我来说,它位于 settings.py

INSTALLED_APPS = [
  ...
  'accounts.apps.AccountsConfig',
  'accounts.apps.AccountsConfig',
  ...
]

只需删除其中之一

答案 10 :(得分:0)

在我的情况下,在mysite settings.py中,在INSTALLED_APPS数组变量中,我错误地两次输入了应用名称。

答案 11 :(得分:0)

我遇到了几乎相同的问题。

```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。我删除了一个,效果很好。

答案 12 :(得分:0)

有同样的问题,请仔细阅读根文件夹的settings.py,删除所有引起冲突的已安装应用程序...可以正常工作。将不得不重命名应用名称

答案 13 :(得分:0)

如果AppConfig类本身的名称与项目中另一个类的名称匹配,也可能引发此异常。例如:

class MessagesConfig(AppConfig):
    name = 'mysite.messages'

class MessagesConfig(AppConfig):
    name = 'django.contrib.messages'

即使每种配置的名称属性都不同,也会发生冲突。

答案 14 :(得分:0)

根据我的经验,此异常掩盖了真正的错误。要查看真正的错误(在我的情况下是一个已卸载的python软件包),请在 django / apps / registry.py 中注释掉以下内容:

if app_config.label in self.app_configs:
    # raise ImproperlyConfigured(
    #     "Application labels aren't unique, "
    #     "duplicates: %s" % app_config.label)
    pass

答案 15 :(得分:-1)

检查 settings.py 中 INSTALLED_APPS 中的重复项...如果是,请删除其中之一并重新运行命令

答案 16 :(得分:-1)

如果您已在settings.py中添加了应用名称 如图所示,示例比IN settings.py删除它,然后尝试一下对我有用。 试试看 。 之所以可行,是因为settings.py假定安装两次,并且不允许迁移

答案 17 :(得分:-23)

如果要退回旧版本,请执行命令

pip install django==1.6.7