Что такое виртуальное окружение и зачем оно вообще нужно?
Постоянно слышу про venv, советуют «создай виртуальное окружение под проект». Но зачем? Я же могу просто ставить библиотеки через pip и всё работает. В чём смысл этой возни?
3 ответа
Смысл — изоляция зависимостей по проектам.
Если ставить всё глобально, рано или поздно случится конфликт: проекту A нужен requests==2.25, проекту B — requests==2.31, а Python один на всех, и две версии одновременно не уживутся. Виртуальное окружение — это отдельная папка с собственной копией интерпретатора и своим набором пакетов. У каждого проекта свой набор, они не мешают друг другу.
Бонусы:
- Глобальный Python остаётся чистым (а на Linux он системный — туда лезть pip'ом вообще опасно).
- Легко зафиксировать зависимости через
pip freeze > requirements.txtи воспроизвести проект на другой машине. - Удалить проект = удалить папку, никакого мусора в системе.
Создать и активировать:
python -m venv venv
# Windows:
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate
После активации в начале строки терминала появится (venv) — значит, всё pip install теперь падает именно в этот проект.
Чтобы у каждого проекта был свой набор библиотек и они не конфликтовали между собой.
Пока проект один и учебный — можно и без него жить. Но привычку лучше выработать сразу, потом сэкономит кучу нервов.