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

Python виртуальные окружения: как настроить и использовать

6 min read Python Обновлено 29 Dec 2025
Python виртуальные окружения: настройка и команды
Python виртуальные окружения: настройка и команды

Человек за ноутбуком с кодом Python

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

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

Коротко: виртуальное окружение изолирует версии Python и пакетов. Термин “виртуальное окружение”: контейнер для интерпретатора и библиотек.

Важно: виртуальные окружения не виртуальные машины — они не эмулируют ОС, а лишь изолируют интерпретатор и пути к пакетам.

Зачем это нужно — практические сценарии

  • Поддержка нескольких версий Python для разных проектов (например, 2.7 и 3.x).
  • Повторяемость окружения для разработки и CI/CD.
  • Безопасность: меньше риска влияния глобальных библиотек.
  • Удобство совместной разработки: легко предоставить файл зависимостей.

Подготовка: что нужно установить

  1. Python: на macOS Python обычно предустановлен; на Windows скачайте установщик с python.org.
  2. pip: менеджер пакетов. Начиная с Python 2.7.9 и Python 3.4 pip обычно уже в комплекте.
  3. virtualenv: пакет для создания окружений.
  4. virtualenvwrapper (опционально): упрощает управление несколькими окружениями.

Установка virtualenv:

pip install virtualenv

Установка virtualenvwrapper (Linux/macOS):

pip install virtualenvwrapper

На Windows используйте специальный порт:

pip install virtualenvwrapper-win

Перед установкой убедитесь, что virtualenv установлен.

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

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

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

WORKON_HOME — папка, где будут храниться все окружения (по умолчанию можно выбрать любую).

Примечание: в macOS и Linux путь к virtualenvwrapper.sh может отличаться (например, /usr/local/bin/ или $(python -m site –user-base)/bin). Используйте which virtualenvwrapper.sh или python -m site --user-base для поиска.

Создание и базовое использование окружений

Создание окружения с помощью virtualenvwrapper:

mkvirtualenv muo

Создание виртуального окружения Python

Это создаст папку и окружение muo внутри ~/Envs (или в том каталоге, который вы указали в WORKON_HOME).

Активация/переключение между окружениями:

workon muo

Активация проекта Python в терминале

Команда workon автоматически деактивирует текущее окружение (если оно было активно) и активирует указанное. Активное окружение отображается в приглашении командной строки.

Деактивация окружения:

deactivate

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

lsvirtualenv

Список виртуальных окружений Python

Удаление окружения:

rmvirtualenv muo

Перед удалением убедитесь, что вы не находитесь в этом окружении.

Если появилась ошибка при удалении (например, активное окружение), просто деактивируйте его и повторите команду.

Создание окружения с определённой версией Python:

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

Путь /usr/bin/python2.7 должен указывать на нужный исполняемый файл Python. Название muo27 — полезная практика: добавить суффикс с версией для читаемости.

Дополнительные опции и практики

–no-site-packages

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

freeze и восстановление зависимостей

Сохраните зависимости проекта:

pip freeze > dependencies.txt

Установите их на другой машине или в другом окружении:

pip install -r dependencies.txt

Совет: используйте requirements.txt как стандартное имя файла зависимостей для совместимости с большинством инструментов.

Альтернативы и современные инструменты

  • venv: встроенный модуль в Python 3.3+ для создания окружений. Команда:
python3 -m venv .venv
source .venv/bin/activate
  • pipenv: объединяет виртуальное окружение и управление зависимостями (Pipfile/Pipfile.lock).
  • poetry: управление зависимостями и упаковкой проекта, удобен для библиотек.

Когда использовать что:

  • Для простых проектов на Python 3 используйте venv.
  • Если нужен удобный workflow и lock-файлы — pipenv или poetry.
  • Если вам знаком virtualenvwrapper и он удобен — можно продолжать его использовать.

Windows: особенности и советы

  • Установщик Python для Windows может предложить опцию “Add Python to PATH” — рекомендую включить для удобства.
  • Для virtualenvwrapper используйте virtualenvwrapper-win.
  • При проблемах с правами запуска — открывайте PowerShell/Command Prompt от имени администратора.
  • Для активации venv в PowerShell:
.\.venv\Scripts\Activate.ps1

Если PowerShell блокирует выполнение скриптов, временно разрешите запуск:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Git и игнорирование окружений

Всегда исключайте папки окружений из системы контроля версий. Пример строки в .gitignore:

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

Лучше хранить только файл зависимостей (requirements.txt, Pipfile, pyproject.toml) в репозитории.

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

  • Не храните секреты (ключи API, пароли) в коде или в requirements-файлах. Используйте переменные окружения или менеджеры секретов.
  • Обновляйте зависимости регулярно и проверяйте известные уязвимости (инструменты: Safety, Dependabot, Snyk).

Отладка и частые ошибки

  • “command not found: workon” — проверьте, что virtualenvwrapper установлен и что вы выполнили source virtualenvwrapper.sh в конфиге shell.
  • Ошибка при установке пакетов с native-расширениями — установите системные зависимости (например, заголовки Python, компиляторы).
  • Если pip устанавливает пакеты в глобальную область — убедитесь, что окружение активно: приглашение терминала должно содержать имя окружения.

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

Разработчик:

  • Создал виртуальное окружение для проекта
  • Сохранил зависимости в requirements.txt или Pipfile
  • Добавил окружение в .gitignore

Тим-лид / ревьюер:

  • Проверил, что инструкции по запуску включают команды создания и активации окружения
  • Убедился в наличии lock-файла (Pipfile.lock или poetry.lock) для воспроизводимости

DevOps / CI-инженер:

  • В CI настроено создание окружения (venv, pipenv, poetry)
  • Проверена установка зависимостей и запуск тестов в чистом окружении

Быстрый набор команд (cheat sheet)

Создать virtualenv:

virtualenv venv_name

Создать venv (Python 3):

python3 -m venv .venv

Активировать (macOS/Linux):

source .venv/bin/activate

Активировать (Windows cmd):

.\.venv\Scripts\activate.bat

Деактивировать:

deactivate

Сохранить зависимости:

pip freeze > requirements.txt

Установить зависимости из файла:

pip install -r requirements.txt

Удалить окружение (virtualenvwrapper):

rmvirtualenv name

Миграция между инструментами

  • Из virtualenv/venv в pipenv: создайте Pipfile командой pipenv --python 3.x, затем установите зависимости pipenv install -r requirements.txt.
  • Из pipenv в poetry: poetry init затем вручную перенесите зависимости или используйте команды импорта.

Совет: перед миграцией зафиксируйте текущее состояние зависимостей в lock-файле и проверьте проект в чистом окружении.

Критерии приёмки

  • Проект запускается в чистом окружении после выполнения инструкций в README.
  • Все зависимости указаны в requirements.txt/Pipfile/pyproject.toml.
  • Окружение не попало в репозиторий (папка окружения в .gitignore).

Краткий словарь (1‑строчная справка)

  • virtualenv: пакет для создания изолированных окружений Python.
  • virtualenvwrapper: набор команд для удобного управления виртуальными окружениями.
  • venv: встроенный модуль Python 3 для создания окружений.
  • pipenv/poetry: современные инструменты для управления зависимостями и окружением.

Часто задаваемые вопросы

Нужно ли всегда использовать virtualenvwrapper?

Нет. virtualenvwrapper удобен при большом количестве окружений, но для простых проектов достаточно venv или pipenv.

Можно ли установить системные пакеты в окружение?

Обычно нет — окружение изолировано. Если нужно, можно установить зависимости глобально, но это нарушит изоляцию.

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

Укажите путь к нужному интерпретатору при создании окружения: virtualenv -p /path/to/pythonX.Y name или используйте pyenv для управления версиями Python.

Резюме

Виртуальные окружения — обязательный инструмент для управления зависимостями и версиями Python. Для большинства новых проектов достаточно встроенного venv, для удобства управления множеством окружений — virtualenvwrapper, а для продвинутого управления зависимостями — pipenv или poetry. Всегда сохраняйте файл зависимостей, исключайте локальные окружения из репозитория и проверяйте безопасность пакетов.

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

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

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

Отключить автояркость и True Tone на iPhone
Mobile

Отключить автояркость и True Tone на iPhone

Демонстрация экрана в WhatsApp — как делиться
Руководства

Демонстрация экрана в WhatsApp — как делиться

Автоудаление OTP в Google Messages
Безопасность

Автоудаление OTP в Google Messages

Google Messages for Web — руководство по использованию
Мессенджеры

Google Messages for Web — руководство по использованию

Как добавлять подписи к рисункам и таблицам в Word
Руководство

Как добавлять подписи к рисункам и таблицам в Word

Как выбрать язык для веб‑разработки
Веб-разработка

Как выбрать язык для веб‑разработки