Python -m django startproject vs django-admin startproject

Привет всем, в чем разница между python -m django startproject и

django-admin startproject

если у него есть какие-либо различия, то какой из них лучше использовать?

django-admin - это скрипт, устанавливаемый setuptools при установке django (т.е.: pip install django). Созданный скрипт выполняет что-то похожее (но не точно):

from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)

Вы можете увидеть его определение в setup.cfg:48, где определена точка входа для запуска функции django.core.management:execute_from_command_line.

Аналогично, manage.py выглядит примерно так:

...imports

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "yourproject.settings")

    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

Итак, как говорится в docs: manage.py автоматически генерируется и делает то же самое, что и django-admin, но устанавливает переменную окружения модуля DJANGO_SETTINGS_MODULE.

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