
В проектах на Django виртуальное окружение venv используется для изоляции зависимостей конкретного приложения от системных библиотек Python. Это позволяет зафиксировать версии Django, сторонних пакетов и инструментов, исключив конфликты между проектами. Без активированного окружения команды django-admin, pip и python manage.py могут обращаться к глобальной установке Python, что приводит к непредсказуемому поведению.
Активация venv напрямую влияет на то, какой интерпретатор Python используется при запуске сервера разработки, выполнении миграций и установке зависимостей из requirements.txt. После активации все команды в терминале выполняются в контексте каталога виртуального окружения, а установленные пакеты сохраняются внутри него, а не в системе. Это особенно важно при работе с несколькими версиями Django или Python на одном компьютере.
Процедура активации различается в зависимости от операционной системы и оболочки командной строки. В Windows применяются скрипты activate.bat или Activate.ps1, тогда как в Linux и macOS используется файл activate в каталоге bin. Неверный путь, политика выполнения PowerShell или отсутствие прав на запуск скриптов – частые причины ошибок, которые стоит учитывать заранее.
Корректно активированное виртуальное окружение сразу видно по изменению приглашения командной строки и по пути интерпретатора, возвращаемому командой which python или where python. Эти признаки помогают быстро проверить, что Django-проект запускается именно в том окружении, для которого были установлены все зависимости.
Проверка установленного Python перед созданием venv
Перед созданием виртуального окружения для Django необходимо точно определить, какая версия Python установлена в системе и какой интерпретатор будет использован. Django требует Python не ниже 3.10 для актуальных релизов, поэтому проверка версии – обязательный шаг.
В терминале или командной строке выполните проверку версии:
- python —version – в Linux и macOS
- python3 —version – если Python 2 и 3 установлены параллельно
- py —version – в Windows при наличии Python Launcher
Если в системе присутствует несколько интерпретаторов, важно определить, какой из них будет использован при создании venv. Для этого проверьте путь к исполняемому файлу:
- which python или which python3 – Linux и macOS
- where python – Windows
Для Django-проекта рекомендуется явно указывать нужную версию Python при создании окружения. Это исключает использование неподходящего интерпретатора:
- python3.12 -m venv venv – Linux и macOS
- py -3.12 -m venv venv – Windows
Если команда не выполняется, убедитесь, что модуль venv установлен. В некоторых дистрибутивах Linux он отсутствует по умолчанию и устанавливается отдельно, например через пакет python3-venv.
Также проверьте, что Python добавлен в переменную окружения PATH. В Windows это особенно важно: без корректного пути команды python и pip будут недоступны, а виртуальное окружение не создастся.
Создание виртуального окружения venv в каталоге проекта Django

Виртуальное окружение следует создавать на уровне каталога проекта Django, а не внутри приложений. Обычно это директория, где находится manage.py или где он будет создан после инициализации проекта. Такой подход упрощает работу с зависимостями и настройку инструментов разработки.
После перехода в каталог проекта выполняется команда создания окружения через стандартный модуль Python: python -m venv venv. Имя venv используется по умолчанию и корректно распознаётся большинством редакторов кода, включая автоматическое определение интерпретатора.
При наличии нескольких версий Python важно указать конкретную, с которой будет работать Django. Пример команды: python3.10 -m venv venv для Linux и macOS или py -3.10 -m venv venv для Windows. Это предотвращает установку Django в окружение с неподдерживаемой версией Python.
В результате выполнения команды формируется каталог venv с собственным интерпретатором Python и менеджером пакетов pip. Структура окружения изолирована от системы, что позволяет безопасно устанавливать Django, расширения и библиотеки без влияния на другие проекты.
Созданное окружение рекомендуется сразу исключить из репозитория, добавив каталог venv в .gitignore. Это избавляет от проблем с переносом проекта между машинами и сохраняет репозиторий чистым от служебных файлов.
Активация venv в Windows через командную строку и PowerShell

В Windows активация виртуального окружения Django выполняется из каталога проекта, где расположен созданный ранее каталог venv. Перед запуском команды необходимо убедиться, что используется нужная оболочка, так как способ активации отличается для Command Prompt и PowerShell.
В стандартной командной строке Windows активация выполняется запуском batch-скрипта: venv\Scripts\activate.bat. После выполнения команды в начале строки появляется имя окружения, что указывает на использование локального интерпретатора Python и изолированного pip.
При работе в PowerShell используется скрипт venv\Scripts\Activate.ps1. Если команда не выполняется, причиной обычно является политика выполнения скриптов. Для текущей сессии её можно изменить командой Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass, после чего повторно запустить активацию.
При запуске команд python manage.py runserver или pip install django активное окружение гарантирует, что проект не использует системный Python, что особенно важно при наличии нескольких версий интерпретатора в Windows.
Активация venv в Linux и macOS через терминал
В Linux и macOS активация виртуального окружения выполняется через оболочку терминала из каталога проекта Django, где находится папка venv. Команда активации использует shell-скрипт, который настраивает переменные окружения текущей сессии.
Для запуска окружения применяется команда source venv/bin/activate. После её выполнения имя окружения добавляется в начало приглашения командной строки, что указывает на переключение интерпретатора Python на локальный, связанный с проектом.
Если команда не выполняется, следует проверить права на файл venv/bin/activate. При необходимости доступ на выполнение можно выдать с помощью chmod +x venv/bin/activate. Также важно убедиться, что используется совместимая оболочка, например bash или zsh.
После активации можно сразу запускать сервер разработки и служебные команды Django. При закрытии терминала окружение автоматически деактивируется, поэтому для каждой новой сессии активацию необходимо выполнять повторно.
Признаки успешной активации виртуального окружения
После активации venv важно сразу убедиться, что Django-проект действительно использует изолированное окружение, а не системный Python. Это позволяет избежать установки зависимостей в неправильное место и ошибок при запуске проекта.
Первый визуальный признак – изменение приглашения командной строки. В начале строки отображается имя окружения, обычно совпадающее с названием каталога venv. Это означает, что переменные окружения текущей сессии изменены.
| Команда | Ожидаемый результат |
| which python / where python | Путь содержит каталог venv/bin или venv\Scripts |
| pip —version | Указан путь к pip внутри виртуального окружения |
| python -c «import django; print(django.get_version())» |
Дополнительно можно проверить список установленных пакетов командой pip list. В корректно активированном окружении отображаются только зависимости текущего проекта, без глобальных библиотек системы.
Если хотя бы один из признаков отсутствует, рекомендуется деактивировать окружение и повторить активацию, проверяя путь выполнения команд и текущий каталог проекта.
Типовые ошибки при активации venv и способы их устранения
При работе с виртуальным окружением Django ошибки активации чаще всего связаны с путями, правами доступа и особенностями оболочки. Быстрая диагностика позволяет устранить проблему без пересоздания окружения.
- Команда activate не найдена – возникает при запуске активации вне каталога проекта. Убедитесь, что текущая директория содержит папку venv, либо укажите полный путь к скрипту активации.
- Отказ в выполнении Activate.ps1 в PowerShell – ошибка политики выполнения скриптов. Исправляется временной командой Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass с последующим повторным запуском активации.
- Permission denied при source venv/bin/activate – означает отсутствие прав на выполнение файла. Решается командой chmod +x venv/bin/activate в Linux и macOS.
Ошибки могут возникать и при создании окружения, что проявляется на этапе активации. В таких случаях стоит проверить версию Python и наличие модуля venv.
- ModuleNotFoundError: No module named ‘venv’ – модуль не установлен. В Linux устанавливается отдельным пакетом, например python3-venv.
- venv создан с другой версией Python – окружение активируется, но Django не запускается. Проверяется через python —version внутри активного venv.
Если ошибки повторяются, рекомендуется удалить каталог venv и создать окружение заново, явно указав нужную версию Python и проверив корректность текущего пути проекта.
Активация venv при запуске Django-сервера
Перед запуском сервера разработки Django виртуальное окружение должно быть активировано в той же сессии терминала, где выполняется команда python manage.py runserver. Это гарантирует, что используется локальный интерпретатор и установленные в проекте зависимости.
Активация выполняется один раз для текущей сессии. После этого любые команды, связанные с Django, включая запуск сервера, применение миграций и создание суперпользователя, автоматически работают в рамках venv без дополнительных параметров.
Если сервер запускается через скрипты или задачи автоматизации, активацию необходимо включить явно. В Linux и macOS это делается через source venv/bin/activate в начале скрипта, в Windows – вызовом venv\Scripts\activate перед запуском Django.
При использовании IDE важно проверить, что для запуска сервера выбран интерпретатор из каталога venv. В противном случае Django может стартовать с системным Python даже при активном окружении в терминале.
Деактивация виртуального окружения и переключение между проектами
После завершения работы с Django-проектом виртуальное окружение следует деактивировать, чтобы команды в терминале снова выполнялись с использованием системного Python. Это особенно важно при работе с несколькими проектами в одной сессии.
Деактивация выполняется одинаково во всех операционных системах и оболочках. Для этого используется встроенная команда deactivate, которая доступна только при активном окружении и не требует указания путей.
| Действие | Результат |
| Выполнение команды deactivate | Удаляется префикс venv из командной строки |
| Повторная проверка python | Используется системный интерпретатор |
При переключении между Django-проектами всегда необходимо сначала деактивировать текущее окружение, затем перейти в каталог другого проекта и активировать его собственный venv. Это исключает запуск сервера и установку пакетов в неправильное окружение.
Если в новом проекте отсутствует виртуальное окружение, его следует создать до активации. Использование одного venv для нескольких проектов приводит к конфликтам зависимостей и затрудняет обновление Django и связанных библиотек.
Для проверки корректного переключения рекомендуется после активации нового окружения выполнить which python или where python и убедиться, что путь указывает на каталог venv текущего проекта.
Вопрос-ответ:
Почему Django запускается, но пакеты устанавливаются не в виртуальное окружение?
Чаще всего окружение не было активировано в текущей сессии терминала. Визуальный индикатор venv в приглашении строки может отсутствовать, если терминал был открыт заново. Проверь путь к интерпретатору через where python или which python. Если указан системный путь, нужно заново активировать venv перед установкой пакетов и запуском сервера.
Можно ли использовать одно виртуальное окружение для нескольких Django-проектов?
Технически это возможно, но приводит к конфликтам зависимостей. Проекты часто требуют разные версии Django и сторонних библиотек. Отдельное venv для каждого проекта позволяет обновлять пакеты независимо и исключает ошибки при развертывании и локальном запуске.
Почему команда source venv/bin/activate не работает в Linux или macOS?
Причина обычно связана с оболочкой или правами доступа. Проверь, что используется bash или zsh, а файл venv/bin/activate доступен для чтения. При необходимости выдай права через chmod +x venv/bin/activate и убедись, что команда выполняется из каталога проекта.
Нужно ли активировать venv каждый раз перед запуском Django?
Да, активация действует только в рамках текущей сессии терминала. После закрытия окна или открытия новой вкладки окружение считается неактивным. Перед запуском manage.py runserver и выполнением миграций venv требуется активировать заново.
Как понять, что IDE запускает Django с правильным виртуальным окружением?
В настройках проекта должен быть выбран интерпретатор Python из каталога venv. Дополнительно можно вывести путь интерпретатора внутри Django-кода или посмотреть лог запуска сервера. Если используется системный Python, зависимости проекта могут не определяться.
