Virtualenv
- Virtualenv
- изолированное Python окружение для отдельного проекта.
Позволяет:
- хранить зависимости отдельно от системы
- избегать конфликтов версий библиотек
- делать проекты переносимыми
- создавать одинаковое окружение для CI/CD и разработки
Зачем нужен virtualenv
Без виртуального окружения Python пакеты устанавливаются глобально в систему.
Это приводит к нескольким проблемам:
- разные проекты требуют разные версии библиотек
- обновление пакета может сломать старый проект
- сложно переносить проект между машинами
- появляется хаос в зависимостях
Главная идея
Один проект = одно виртуальное окружение.
Как работает virtualenv
Virtualenv создает отдельную директорию с собственным Python interpreter и pip.
При активации изменяется переменная PATH.
Из-за этого терминал начинает использовать Python и pip из .venv вместо системных.
Создание виртуального окружения
После выполнения команды появится директория:
Внутри неё будут храниться:
- Python interpreter
- pip
- библиотеки
- конфигурация окружения
Активация окружения
После активации появляется:
Это означает что терминал использует Python из virtualenv.
Совет
Используйте отдельный virtualenv для каждого проекта.
выключение virtualenv
если нужно деактивировать вирутальное окружение, то вам поможет команда
Проверка virtualenv
Проверить используемый python:
Что находится внутри .venv
bin/
Исполняемые файлы:
- python
- pip
- activate
lib/
Установленные библиотеки Python.
include/
Файлы для сборки некоторых Python пакетов.
pyvenv.cfg
Конфигурация виртуального окружения.
Как удалить virtualenv
Virtualenv — это обычная директория.
Удаление:
best practice
workflow
mkdir myproject
cd myproject
python3 -m venv .venv
source .venv/bin/activate
pip install requests
pip freeze > requirements.txt
...
...
deactivate
Добавляем .venv в .gitignore
это нужно чтобы в гит репозиторий не попадали лишние файлы
В корне вашего проекта создаем файл .gitignore со следующим содержимым:
Затем добавляем данный файл в индекс, выполняем коммит и пушим его в репозиторий.anti-patterns
Установка пакетов через sudo pip install
Плохо:
Почему плохо:- ломает системный Python
- конфликтует с пакетным менеджером OS
- может сломать brew/apt/dnf
Возможные ошибки
activate: no such file or directory
Причины:
- окружение не создано
- неправильный путь
- используется другая shell
pip installs packages globally
Причина: virtualenv не активирован.
Важно
Если virtualenv не активирован — pip установит пакеты глобально.
externally-managed-environment
Ошибка появляется на новых macOS и Linux системах.
Решение: использовать virtualenv вместо глобального pip install.