Ошибка при выполнении пользовательской команды manage.py

Я создаю многопользовательское приложение на основе этой страницы https://www.section.io/engineering-education/implement-multitenancy-with-multiple-databases-in-django/#use-middlewares-for-tenant-specific-database-routing.

Он просит создать пользовательский manage.py (с именем myapp_manage.py) для создания суперпользователя, таким образом, я могу указать базу данных, которую я хочу запустить командой следующим образом:

python myapp_manage.py databasename createsuperuser --database=databasename

Все было хорошо, я мог запустить команду без проблем, но теперь, когда я пытаюсь запустить ее, она выдает ошибку:

django.core.exceptions.ImproperlyConfigured: Запрошена настройка INSTALLED_APPS, но настройки не настроены. Вы должны либо определить переменную окружения DJANGO_SETTINGS_MODULE, либо вызвать settings.configure() перед доступом к настройкам.

.

Я не понимаю, почему появляется эта ошибка, ведь окружение в пользовательском manage.py настроено точно так же, как и в стандартном manage.py.

Custom manage.py:

#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""

import os
import sys

from myapp.middleware import set_db_for_router

if __name__ == "__main__":
    """Run administrative tasks."""
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'al_project.settings')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc

    # new
    from django.db import connection

    args = sys.argv
    db = args[1]
    with connection.cursor() as cursor:
        set_db_for_router(db)
        del args[1]
        execute_from_command_line(args)

Стандартный manage.py:

#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys


def main():
    """Run administrative tasks."""
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'al_project.settings')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)

Итак, строка 'os.environ.setdefault' одинаковая в обоих файлах, и я могу запускать команды manage.py без каких-либо проблем, что, как я понимаю, свидетельствует о том, что путь к файлу правильный, но я не могу запустить команду myapp_manage.py (файл находится в том же пути, что и файл manage.py).

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

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