Гид по технологиям

Как настроить виртуальное окружение Python

6 min read Python Обновлено 28 Apr 2026
Настройка виртуального окружения Python
Настройка виртуального окружения Python

Два разработчика за ноутбуками, обсуждающие код и окружения

Что такое виртуальное окружение Python

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

Зачем это нужно:

  • Разные проекты могут требовать разных версий Python или библиотек.
  • Изоляция предотвращает конфликты зависимостей.
  • Удобно воспроизводить и переносить проект другим разработчикам.

Короткая аналогия: это как иметь отдельную «песочницу» для каждого проекта, чтобы игрушки (пакеты) не смешивались.

Преимущества и ограничения

Преимущества:

  • Простое управление зависимостями.
  • Лёгкое восстановление окружения через requirements-файлы.
  • Безопасность: системный Python остаётся неизменным.

Когда виртуальное окружение подходит не лучшим образом:

  • Для контейнеризированных решений (Docker) иногда удобнее управлять зависимостями через образ контейнера.
  • Если проект использует системные расширения, требующие глобальных библиотек, изоляция может потребовать дополнительной настройки.

Требования и подготовка

Что понадобится:

  • Рабочий Python (Mac обычно поставляется с Python; на Windows нужно установить Python вручную).
  • pip — менеджер пакетов (входит в Python 2.7.9+ и во все современные версии Python 3).
  • Терминал: командная строка Windows, Terminal на macOS или shell в Linux.

Рекомендуется использовать систему контроля версий (Git) и добавить окружения в .gitignore.

Установка инструментов

Откройте терминал и установите virtualenv:

pip install virtualenv

Рекомендуем также virtualenvwrapper — набор утилит для упрощённого создания и управления окружениями:

pip install virtualenvwrapper

Для Windows используйте специальный пакет:

pip install virtualenvwrapper-win

Важно: установите virtualenv перед установкой virtualenvwrapper.

Настройка virtualenvwrapper (macOS / Linux)

Добавьте в shell-конфигурацию (например, ~/.bashrc или ~/.zshrc):

export WORKON_HOME=~/Envs  
source /usr/local/bin/virtualenvwrapper.sh

WORKON_HOME — папка, где будут храниться все виртуальные окружения. Wrapper собирает окружения в одном месте, вместо того чтобы разбросывать их по файловой системе.

Основные команды и сценарии использования

Создать новое окружение:

mkvirtualenv muo

Активировать окружение (переключиться на проект):

workon muo

Деактивировать текущее окружение:

deactivate

Замечание: workon автоматически деактивирует текущее окружение и активирует указанное; предварительная деактивация не требуется.

Список окружений:

lsvirtualenv

Вывод списка виртуальных окружений в терминале

Удалить окружение (убедитесь, что вы не находитесь в нём):

rmvirtualenv muo

Создать окружение с конкретной версией Python (укажите путь к бинарнику Python):

virtualenv -p /usr/bin/python2.7 muo27

Убедитесь, что путь /usr/bin/python2.7 указывает на реальный исполняемый файл Python.

Работа с зависимостями

Зафиксировать текущие зависимости проекта:

pip freeze > dependencies.txt

Восстановить зависимости на другой машине:

pip install -r dependencies.txt

Опция –no-site-packages (устаревшая в новых virtualenv): раньше использовалась для изоляции от глобально установленных пакетов. В современных версиях virtualenv окружения уже по умолчанию изолированы от глобальных пакетов, но полезно знать, что цель этой опции — убрать доступ к системным пакетам для максимальной чистоты окружения.

Советы по использованию и лучшие практики

  • Храните зависимости в requirements.txt или dependencies.txt и обновляйте их при изменениях.
  • Не кладите виртуальные окружения в репозиторий; добавьте папку WORKON_HOME в .gitignore.
  • Наименования окружений делайте понятными: projectname-py37, analytics-py39 и т. п.
  • Используйте virtualenv для простых проектов, а pyenv + virtualenv или Docker — для управления версией интерпретатора на уровне системы.
  • Регулярно пересматривайте и чистите неиспользуемые окружения.

Различия между инструментами (альтернативы)

  • virtualenv — базовый инструмент для создания окружений.
  • virtualenvwrapper — удобный набор обёрток и команд для управления окружениями.
  • virtualenvwrapper-win — версия wrapper для Windows.
  • pyenv — управляет версиями Python; часто используется вместе с pyenv-virtualenv для комбинированного управления версиями и окружениями.
  • Docker — изолирует целую среду выполнения, включая ОС-зависимости; подходит для продакшен-сборок и CI.

Выбор зависит от ваших целей: если нужно просто изолировать пакеты — virtualenv достаточно; если требуются разные интерпретаторы на одной машине — pyenv; если нужна полная воспроизводимость окружения на сервере — Docker.

Частые ошибки и как их исправить

  1. “command not found: mkvirtualenv” — проверьте, подключён ли virtualenvwrapper.sh и правильно ли задан WORKON_HOME.
  2. “pip: command not found” — возможно, pip не в PATH; используйте python -m pip install … или установите pip отдельно.
  3. Ошибка при указании пути к Python: проверьте, существует ли указанный бинарник и имеет ли он права на исполнение.
  4. При конфликтующих версиях пакетов — создайте чистое окружение и поочерёдно устанавливайте зависимости, чтобы выявить проблемный пакет.

Проверка готовности окружения — критерии приёмки

Окружение можно считать готовым, если выполнены все пункты:

  • Активируется командой workon <имя> без ошибок.
  • pip list или pip freeze показывает ожидаемые версии ключевых пакетов.
  • Скрипты проекта запускаются в окружении без обращения к глобальным пакетам.
  • dependencies.txt (или requirements.txt) воспроизводит окружение на другой машине.

Чеклист для разных ролей

  • Для разработчика:

    • Создать окружение и зафиксировать зависимости.
    • Добавить инструкции по запуску в README.
    • Добавить окружение в .gitignore.
  • Для тестировщика:

    • Воспроизвести окружение по dependencies.txt.
    • Проверить ключовые сценарии приложения.
  • Для DevOps:

    • Автоматизировать создание окружений в CI (использовать pip install -r requirements.txt или Docker).
    • Убедиться, что системные зависимости (libssl, libpq и т. д.) установлены на уровне ОС.

Мини-методология: быстрый старт для нового проекта (5 шагов)

  1. Создайте репозиторий и README с инструкцией по окружению.
  2. Установите virtualenv и virtualenvwrapper.
  3. mkvirtualenv projectname
  4. Установите пакет(ы) и pip freeze > requirements.txt
  5. Добавьте WORKON_HOME/ project folder в .gitignore и зафиксируйте изменения в VCS.

Примеры .gitignore и шаблоны

Добавьте в .gitignore:

# виртуальные окружения
Envs/
.env/
venv/

# файлы зависимостей локальной машины
dependencies.txt

Шаблон README-раздела «Как запустить локально»:

  1. Установить Python и pip
  2. pip install virtualenv virtualenvwrapper
  3. export WORKON_HOME=~/Envs && source /usr/local/bin/virtualenvwrapper.sh
  4. mkvirtualenv projectname && workon projectname
  5. pip install -r requirements.txt
  6. python manage.py runserver (пример)

Безопасность и приватность

  • Не храните секреты (ключи, пароли) в зависимостях или в репозитории. Используйте переменные окружения или менеджеры секретов.
  • Проверяйте пакеты перед установкой (из надёжных источников PyPI или ваших приватных репозиториев).
  • Очищайте ненужные окружения, чтобы не оставлять на машине устаревшие версии с уязвимостями.

Когда виртуальное окружение не решит проблему

  • Если вам нужно одинаковое окружение на продакшене и деве, контейнеризация (Docker) даст более точный контроль над ОС-зависимостями.
  • Если ваша задача — переключать версии самого интерпретатора на уровне пользователя, используйте pyenv.

Быстрая памятка — набор полезных команд

pip install virtualenv
pip install virtualenvwrapper
mkvirtualenv projectname
workon projectname
deactivate
lsvirtualenv
rmvirtualenv projectname
pip freeze > requirements.txt
pip install -r requirements.txt

Модель принятия решения (Mermaid)

flowchart TD
  A[Нужно изолировать зависимости?] -->|Да| B{Требуется управлять версиями Python?}
  B -->|Да| C[Рассмотреть pyenv + virtualenv]
  B -->|Нет| D[Использовать virtualenv / virtualenvwrapper]
  A -->|Нет| E[Работать с системным Python]
  C --> F[Если нужна полная воспроизводимость на сервере — Docker]
  D --> F

(Сценарий: если нужна максимальная воспроизводимость, Docker предпочтителен.)

Контроль качества и тесты приёмки

Тесты приёмки для окружения:

  • Установить окружение за шаги README без ошибок.
  • Запустить базовый тестовый скрипт, который импортирует ключевые модули.
  • Убедиться, что pip install -r requirements.txt приводит к идентичному списку пакетов.

Короткая сводка и следующий шаг

Виртуальные окружения — обязательный инструмент современного Python-разработчика. Они упрощают управление зависимостями, делают проекты воспроизводимыми и уменьшают риск конфликтов между проектами. После настройки окружения рекомендую документировать процесс в README и интегрировать восстановление зависимостей в CI-пайплайн.

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


Цитата эксперта: «Держите окружения минимальными и документируйте зависимости — это экономит часы на отладке и настройке для новых разработчиков.»

Image Credit: Sergey Nivens and Helen Dream via Shutterstock.com

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро