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
.