Как создать виртуальное окружение Python и не смешать зависимости
Воспроизводимая настройка проекта и проверка, что pip использует нужный Python.
В этом материале
Короткий ответ
Создавайте отдельное виртуальное окружение для каждого проекта. Устанавливайте пакеты через интерпретатор этого окружения: так зависимости не попадут в другой проект или системный Python.
Сначала выберите нужную версию Python
Виртуальное окружение разделяет пакеты, но связано с Python, которым его создали. Сначала посмотрите, какая версия нужна проекту. Если установлено несколько версий, укажите подходящий интерпретатор явно: команда python не всегда выбирает тот, который вы ожидаете.
Создавайте .venv в корне проекта. Код приложения должен лежать рядом, а не внутри этой папки: окружение можно удалить и создать заново при смене Python или компьютера. Ниже показан обычный вариант для Linux и macOS. В некоторых дистрибутивах Linux поддержку venv нужно установить отдельным системным пакетом.
python3 --version
python3 -m venv .venv
source .venv/bin/activateWindows PowerShell: можно обойтись без активации
В Windows команда py -m venv .venv использует Python, выбранный запускателем. При необходимости укажите установленную версию явно, например py -3.12 -m venv .venv. Затем выполните команду активации для PowerShell из примера.
Если политика выполнения скриптов блокирует Activate.ps1, вызывайте python.exe из окружения напрямую. Для установки пакета необязательно менять политику. Активация только меняет текущую оболочку; само окружение работает и без неё.
py -m venv .venv
.\.venv\Scripts\Activate.ps1
# Direct use without activation:
.\.venv\Scripts\python.exe -m pip --versionУбедитесь, что Python и pip относятся к одной папке
Надпись .venv в приглашении терминала полезна, но надёжнее посмотреть sys.executable. Путь должен вести внутрь .venv именно этого проекта. Команда python -m pip --version дополнительно показывает, откуда запущен pip. Выполняйте проверку в терминале, которым действительно запускаете приложение.
После этого выберите тот же интерпретатор в редакторе. Частая причина ModuleNotFoundError: пакет установили из одного терминала, а редактор или сервер запустил другой Python. Если работаете в ноутбуке, проверьте ещё и выбранное ядро.
python -c "import sys; print(sys.executable)"
python -m pip --versionУстанавливайте зависимости проекта
Если есть requirements.txt, установите его через Python окружения. Для нового проекта команда python -m pip install Django устанавливает Django в это окружение. Для существующего проекта используйте его файл зависимостей, чтобы случайно не заменить предусмотренные версии.
Фиксация версий помогает повторить установку. Однако pip freeze перечисляет установленные пакеты, а не описывает всю среду: там нет версии ОС и Python, зато могут оказаться временные инструменты разработки. Просмотрите результат, прежде чем считать его окончательным списком зависимостей проекта.
python -m pip install -r requirements.txt
python -m pip checkНа другом компьютере создавайте окружение заново
Исключите .venv из Git и архивов поставки. Внутри встречаются абсолютные пути к интерпретатору и пакеты для конкретной платформы, поэтому перенос папки между Windows и Linux ненадёжен. Перенесите код и зависимости, затем создайте окружение на новом месте.
Для службы на сервере или задания по расписанию укажите полный путь к Python окружения. Держать активированный терминал открытым не требуется. По команде запуска будет сразу видно, какой интерпретатор использует приложение.
Что проверять, если установка не помогла
Если в окружении отсутствует pip, попробуйте его Python с параметрами -m ensurepip --upgrade, если ваша поставка Python поддерживает ensurepip. Если окружение создано не той версией Python, пересоздайте его, вместо попытки переделать уже созданное.
Когда пакет по-прежнему не находится, сравните sys.executable, расположение pip и интерпретатор редактора. Сначала прочитайте ошибку установки: неудачная сборка или неподдерживаемая версия Python — другая проблема, чем установка не в ту папку. Команда deactivate завершает активацию в текущем терминале.
python -m pip show Django
deactivateЧто проверить
- Храните исходный код вне .venv.
- Запускайте python -m pip нужным интерпретатором.
- Не добавляйте каталог окружения в Git.
Границы применения
Нужен установленный Python с поддержкой venv. Команды активации зависят от оболочки.