ModuleNotFoundError: Нет модуля с именем 'apps' - Как заставить Django найти мое приложение?

Я начинающий Django, а также новый пользователь SO, и хочу зарегистрировать свое приложение в settings.py.

Версия программного обеспечения:

  • Python 3.11.9
  • Django 4.2.11

Я создал свое приложение (с именем: Portal), следуя этому руководству: startapp с manage.py для создания приложения в другом каталоге

Вот дерево проекта:

C:.
├───media
│   ├───book-covers
│   └───users
├───static
│   └───admin
│       ├───css
│       ├───fonts
│       └───js
└───project
    ├───apps
    │   ├───auth
    │   ├───portal
    │   │   ├───media
    │   │   ├───migrations
    │   │   │   └───__pycache__
    │   │   ├───static
    │   │   │   └───portal
    │   │   │       ├───css
    │   │   │       ├───icons
    │   │   │       ├───images
    │   │   │       └───js
    │   │   ├───templates
    │   │   │   └───catalog
    │   │   └───__pycache__
    │   └───users
    ├───plugins
    │   └───tinymce
    ├───static
    └───__pycache__

Однако, когда я регистрирую свое приложение Portal, Django выдает ошибку:

ModuleNotFoundError: No module named 'apps'

apps.py

from django.apps import AppConfig


class PortalConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'apps.portal'

settings.py

INSTALLED_APPS = [
    '',
    'apps.portal',
    '',
]

Я знаю, что это может быть дублирующим вопросом, но все же я не могу решить эту проблему. Что я должен сделать, чтобы Django нашел мое приложение? Пожалуйста, будьте как можно более конкретными, потому что я совсем новичок. Спасибо за ваше время.

Я пробовал делать шаги, описанные здесь: Правильный способ регистрации приложений в Django

Добавьте это в ваш settings.py

import sys

BASE_DIR = Path(__file__).resolve().parent.parent
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))  # your 'apps' dir containing django apps

Обновите этот код и зарегистрируйтесь

apps.py

from django.apps import AppConfig

class PortalConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'portal'

settings.py

INSTALLED_APPS = [
    '',
    'portal',
    '',
]
Вернуться на верх