Django Cannot import 'main_app' though its already in INSTALLED_APPS

Я не могу запустить свое приложение Django из-за ошибки о том, что main_app не может быть импортирован. Однако, я уже включил main_app в INSTALLED_APPS в settings.py. Я также проверил воссоздание ошибки, и она всегда возникает, когда я включаю main_app в INSTALLED_APPS.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'apps.main_app',
]

urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('apps.main_app.urls')),
]

main_app urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index-home'),
]

views.py

def index(request):
    return render(request, 'index.html')

Ошибка

file changes with StatReloader
Exception in thread django-main-thread:
Traceback (most recent call last):
  File "D:\Github\SwiftUrl\env\lib\site-packages\django\apps\config.py", line 244, in create
    app_module = import_module(app_name)
  File "c:\users\jerome\appdata\local\programs\python\python39\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'main_app'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\users\jerome\appdata\local\programs\python\python39\lib\threading.py", line 954, in _bootstrap_inner
    self.run()
  File "c:\users\jerome\appdata\local\programs\python\python39\lib\threading.py", line 892, in run
    self._target(*self._args, **self._kwargs)
  File "D:\Github\SwiftUrl\env\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper
    fn(*args, **kwargs)
  File "D:\Github\SwiftUrl\env\lib\site-packages\django\core\management\commands\runserver.py", line 110, in inner_run
    autoreload.raise_last_exception()
  File "D:\Github\SwiftUrl\env\lib\site-packages\django\utils\autoreload.py", line 87, in raise_last_exception
    raise _exception[1]
  File "D:\Github\SwiftUrl\env\lib\site-packages\django\core\management\__init__.py", line 375, in execute
    autoreload.check_errors(django.setup)()
  File "D:\Github\SwiftUrl\env\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper
    fn(*args, **kwargs)
  File "D:\Github\SwiftUrl\env\lib\site-packages\django\__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "D:\Github\SwiftUrl\env\lib\site-packages\django\apps\registry.py", line 91, in populate
    app_config = AppConfig.create(entry)
  File "D:\Github\SwiftUrl\env\lib\site-packages\django\apps\config.py", line 246, in create
    raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: Cannot import 'main_app'. Check that 'apps.main_app.apps.MainAppConfig.name' is correct.

Из структуры папок видно, что в папке apps.py нет файла main_app. Файл apps.py показывает некоторую конфигурацию приложения, например, его название.

Создайте файл apps.py в main_app и добавьте следующий код;

from django.apps import AppConfig


class MainAppConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'main_app' 

Посмотрите на файл apps.py в папке main_app. Используйте то же имя, которое объявлено в классе AppConfig

Вернуться на верх