78

在升级到 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

有什么问题,我该如何解决?

4

19 回答 19

104

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

于 2014-06-20T03:40:44.957 回答
83

我为此找到了简单的解决方案。在我的情况下,在INSTALLED_APPS下添加了两次以下行,

'django.contrib.foo',

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

于 2015-03-15T18:30:44.220 回答
19

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

在 INSTALLED_APPS 中,如果您包含 'foo.apps.FooConfig',那么 Django 已经知道在应用程序中包含 foo 应用程序,因此无需同时包含 'foo'。在 INSTALLED_APPS 下同时拥有 'foo' 和 'foo.apps.FooConfig' 可能是您问题的根源。

于 2017-05-02T12:32:33.743 回答
12

好吧,我创建了一个auth应用程序,并将其包含在INSTALLED_APPlike中src.auth(因为它在src文件夹中)并出现此错误,因为也有django.contrib.auth应用程序。所以我将它重命名为authentication,问题解决了!

于 2017-10-05T23:11:30.363 回答
5

在此处输入图像描述 我遇到了同样的问题。这里我的应用程序名称是 chat,在 settings.py 中,在已安装的应用程序下,我已经编写了 chat.apps.ChatConfig,而我已经在底部包含了应用程序名称 chat。当我删除 chat.apps.ChatConfig 我的问题在迁移时得到了解决。此错误可能是由于您可能在 settings.py 中定义了应用名称 foo 两次的同一实例。我希望这行得通!

于 2018-05-25T04:23:09.983 回答
5

请检查 settings.py 的 INSTALLED_APPS 中是否有重复内容

于 2020-04-17T10:40:53.610 回答
3

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

name属性是python路径(唯一),但label也应该是唯一的。例如,如果您有一个名为“admin”的应用程序,那么您必须定义名称(name='python.path')和一个必须也是唯一的标签(label='my admin' 或如前所述放置完整的 python路径总是唯一的)。

于 2014-10-01T14:12:36.110 回答
3

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

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

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

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

于 2019-11-12T04:00:03.427 回答
3

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

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

  • 如果安装应用重复,请检查 setting.py 中的安装应用

  • 由于应用名称重复而显示错误

  • 删除安装文件中的重复名称

  • 问题解决后,您将在屏幕上看到界面

为此,我将应用程序名称创建为 polls 而不是 foo

于 2020-09-12T16:09:21.030 回答
3

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

对我来说,它在settings.py

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

只需删除其中一个

于 2020-04-03T14:54:04.137 回答
2

有同样的问题,通读根文件夹的settings.py,删除任何导致冲突的安装应用程序......工作正常。将不得不重命名应用程序名称

于 2019-10-16T18:29:43.297 回答
1

我有几乎同样的问题。

```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 两次。我删除了一个,它运行良好。

于 2019-09-17T05:47:29.977 回答
1

就我而言,在 mysite settings.py 中,在 INSTALLED_APPS 数组变量中,我错误地将应用程序的名称输入了两次。

于 2019-09-14T09:01:06.117 回答
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 -初始化.py 代码类似于

default_app_config = "ocb.users.apps.ModuleConfig"

default_app_config 指向您的apps.py 的类名

于 2020-02-13T08:08:35.900 回答
0

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

于 2021-07-24T14:03:18.373 回答
0

我曾Django==3.2.9尝试在新环境中测试现有的 Django 应用程序。我遇到了这个确切的问题,并通过降级到Django==3.1.13.

应用程序似乎有更新,请查看Django 3.2 文档以获取详细信息。

于 2021-11-07T13:52:04.027 回答
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
于 2020-06-22T19:11:45.440 回答
-1

如果您在 settings.py 示例中添加了您的应用程序名称,如图所示而不是 IN settings.py删除它并尝试这对我有用。试试看 。这有效,因为 settings.py 假定安装它两次并且不允许迁移

于 2019-11-14T09:21:24.737 回答
-27

如果要备份旧版本,请命令

pip install django==1.6.7
于 2014-09-13T00:02:20.470 回答