← Все вопросы

Что такое виртуальное окружение и зачем оно вообще нужно?

Задан 7 месяцев назад761 просмотров3 ответа
18

Постоянно слышу про venv, советуют «создай виртуальное окружение под проект». Но зачем? Я же могу просто ставить библиотеки через pip и всё работает. В чём смысл этой возни?

3 ответа

29
✓ Принятый ответ — помог автору

Смысл — изоляция зависимостей по проектам.

Если ставить всё глобально, рано или поздно случится конфликт: проекту 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 теперь падает именно в этот проект.

Хайрутин Штанчаев наконец-то понял зачем это, спасибо за пример с двумя версиями requests 👍 · 7 месяцев назад
Ксения Ковалёва venv добавь в .gitignore, не коммить её · 7 месяцев назад
11

Чтобы у каждого проекта был свой набор библиотек и они не конфликтовали между собой.

7

Пока проект один и учебный — можно и без него жить. Но привычку лучше выработать сразу, потом сэкономит кучу нервов.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект