Запуск manage.py: команды и варианты

Раздел: Веб-разработка -> Django

Основные подходы к запуску manage.py

Файл manage.py является точкой входа для управления проектом Django. Он создается автоматически при инициализации проекта с помощью django-admin startproject. Далее рассматриваются различные способы его использования, включая основной и альтернативные варианты.

Самый надежный способ - вызов manage.py через интерпретатор Python внутри активированного виртуального окружения. Это гарантирует, что все зависимости проекта доступны.

cd /path/to/project
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate
pip install django
python manage.py runserver

фреймворк python django (фреймворк django в python)

Пояснение: Создается виртуальное окружение, активируется, устанавливается Django, затем запускается сервер разработки. Если Python отсутствует, возникает ошибка ModuleNotFoundError: No module named 'django'. Решение - установить пакет через pip.

Типичная ошибка: python: command not found - не установлен Python или не добавлен в PATH. Решение: использовать полный путь к интерпретатору или установить Python.

Как запустить manage.py если команда python недоступна?

На системах с несколькими версиями Python часто используется python3.

python3 manage.py migrate

Python manage py (manage.py в django)

Если python3 также отсутствует, можно указать полный путь к интерпретатору, например /usr/bin/python3.

Ошибка: python3: command not found. Решение: установить Python 3 или создать символьную ссылку.

Как запустить manage.py без указания python?

В Unix-подобных системах файл manage.py можно сделать исполняемым. Для этого устанавливается атрибут execute и проверяется shebang.

chmod +x manage.py
./manage.py runserver

Python run manage py (запуск manage.py в django)

Первая строка manage.py должна содержать корректный shebang, например #!/usr/bin/env python или #!/usr/bin/env python3.

Ошибка: Permission denied - забыли выполнить chmod +x. Решение: выдать права на выполнение. Если ошибка bad interpreter - исправить shebang.

Как запустить manage.py из любой директории?

Можно передать полный путь к файлу.

python /home/user/projects/myproject/manage.py collectstatic

Python manage py migrate (команда migrate в django)

Важно: перед этим необходимо активировать виртуальное окружение проекта, иначе импорты будут браться из глобального Python.

Проблема: команда выполняется, но появляются ошибки импорта. Решение: активировать нужное окружение или использовать python -m venv с указанием пути.

Как запустить manage.py внутри Docker-контейнера?

Если проект упакован в Docker, команды выполняются через docker exec или docker-compose run.

docker exec -it mycontainer python manage.py createsuperuser
# или
docker-compose run web python manage.py makemigrations

Контейнер должен быть запущен. При использовании docker-compose run создается новый временный контейнер.

Ошибка: Cannot connect to the Docker daemon - Docker не запущен. Решение: запустить Docker daemon. Если ошибка container not found - проверить имя контейнера.

Как запустить manage.py с помощью IDE?

В PyCharm создается конфигурация запуска: Run > Edit Configurations, указать Script: путь к manage.py, Parameters: команда (например, runserver), Working directory: корень проекта. В VS Code открыть терминал из папки проекта.

Проблема: при запуске из IDE модули не найдены. Решение: убедиться, что виртуальное окружение выбрано как интерпретатор по умолчанию.

Выбор способа зависит от среды разработки и личных предпочтений. Основная рекомендация - всегда использовать виртуальное окружение и явно указывать путь к manage.py.

Расширенные примеры использования manage.py

Ниже приведены менее распространенные, но полезные команды, а также примеры передачи аргументов и создания собственных команд.

Запуск с указанием пользовательских настроек

Пример
python manage.py runserver --settings=myproject.settings.production
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
June 15, 2025 - 10:30:00
Django version 5.0, using settings 'myproject.settings.production'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Параметр --settings переопределяет модуль настроек. Используется для переключения между режимами разработки, тестирования и продакшена.

Запуск тестов с дополнительными параметрами

Пример
python manage.py test --pattern="*tests*.py" --verbosity=2
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
...
----------------------------------------------------------------------
Ran 12 tests in 0.045s

OK
Destroying test database for alias 'default'...

Флаг --pattern фильтрует тестовые файлы, --verbosity увеличивает детализацию вывода.

Использование shell_plus (требуется django-extensions)

Пример
pip install django-extensions  # если еще не установлено
python manage.py shell_plus --bpython
# Shell Plus Model Imports
from myapp.models import Author, Book, Publisher
from django.contrib.auth.models import User
# Shell Plus Django Imports
from django.core.cache import cache
from django.utils import timezone

Python 3.11.5 (default, Aug 24 2023, 15:18:16)
[GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> Author.objects.count()
5

shell_plus автоматически импортирует все модели, экономя время в интерактивной оболочке.

Сбор статики с очисткой

Пример
python manage.py collectstatic --noinput --clear
You have requested to collect static files at the destination
location as specified in your settings:

    /home/user/project/static_root

This will DELETE ALL FILES in this location!
Are you sure you want to do this?

  (yes/no): yes   # при --noinput пропускается

Copying 'admin/css/base.css'
Copying 'admin/css/login.css'
...
9 static files copied to '/home/user/project/static_root'.

Ключ --clear удаляет все файлы в целевой директории перед копированием, --noinput подавляет запрос подтверждения.

Загрузка фикстур

Пример
python manage.py loaddata fixtures/initial_data.json
Installed 34 object(s) from 1 fixture(s)

Фикстуры (JSON, XML, YAML) загружают начальные данные в базу.

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

Пример команды, которая выводит приветствие с опциональным именем.

Пример
# myapp/management/commands/greet.py
from django.core.management.base import BaseCommand

class Command(BaseCommand):
    help = "Prints a greeting"

    def add_arguments(self, parser):
        parser.add_argument('--name', type=str, default='World', help='Name to greet')

    def handle(self, *args, **options):
        name = options['name']
        self.stdout.write(f"Hello, {name}!")

Вызов команды:

Пример
python manage.py greet --name=Alice
Hello, Alice!

Без аргумента:

Пример
python manage.py greet
Hello, World!

Команды регистрируются автоматически при наличии модуля management/commands в приложении Django.

Команды с позиционными аргументами

Пример
# myapp/management/commands/calc.py
from django.core.management.base import BaseCommand

class Command(BaseCommand):
    help = "Simple calculator: add two numbers"

    def add_arguments(self, parser):
        parser.add_argument('a', type=int)
        parser.add_argument('b', type=int)

    def handle(self, *args, **options):
        result = options['a'] + options['b']
        self.stdout.write(str(result))
Пример
python manage.py calc 5 7
12

Запуск manage.py в Django - comments

En
Python run manage py (python)