1. ホーム
  2. django

どのように "django.core.exceptions.ImproperlyConfigured: Application labels aren't unique, duplicates: foo" を Django 1.7 で解決するには?

2023-08-11 11:53:04

質問

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

何が問題で、どう解決すればいいのか?

どのように解決するのですか?

問題は、Django 1.7 のアプリに対する変更で、アプリは一意のラベルを持つことが要求されることです。

デフォルトでは、アプリのラベルはパッケージ名なので、アプリモジュールの 1 つと同じ名前のパッケージがある場合 ( 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