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

Что такое виртуальное окружение Python
Виртуальное окружение — это изолированная папка с установленным интерпретатором Python и наборами пакетов, предназначенная для одного проекта. Оно гарантирует, что зависимости одного проекта не будут влиять на другие проекты и на системный Python.
Коротко: виртуальное окружение изолирует версии Python и пакетов. Термин “виртуальное окружение”: контейнер для интерпретатора и библиотек.
Важно: виртуальные окружения не виртуальные машины — они не эмулируют ОС, а лишь изолируют интерпретатор и пути к пакетам.
Зачем это нужно — практические сценарии
- Поддержка нескольких версий Python для разных проектов (например, 2.7 и 3.x).
- Повторяемость окружения для разработки и CI/CD.
- Безопасность: меньше риска влияния глобальных библиотек.
- Удобство совместной разработки: легко предоставить файл зависимостей.
Подготовка: что нужно установить
- Python: на macOS Python обычно предустановлен; на Windows скачайте установщик с python.org.
- pip: менеджер пакетов. Начиная с Python 2.7.9 и Python 3.4 pip обычно уже в комплекте.
- virtualenv: пакет для создания окружений.
- 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.shWORKON_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Это создаст папку и окружение muo внутри ~/Envs (или в том каталоге, который вы указали в WORKON_HOME).
Активация/переключение между окружениями:
workon muoКоманда workon автоматически деактивирует текущее окружение (если оно было активно) и активирует указанное. Активное окружение отображается в приглашении командной строки.
Деактивация окружения:
deactivateСписок всех окружений:
lsvirtualenvУдаление окружения:
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 CurrentUserGit и игнорирование окружений
Всегда исключайте папки окружений из системы контроля версий. Пример строки в .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
Похожие материалы
Отключить автояркость и True Tone на iPhone
Демонстрация экрана в WhatsApp — как делиться
Автоудаление OTP в Google Messages
Google Messages for Web — руководство по использованию
Как добавлять подписи к рисункам и таблицам в Word