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

Ответ

Виртуальное окружение (virtual environment) в Python — это изолированное пространство для конкретного проекта, позволяющее управлять его зависимостями отдельно от глобальной системы и других проектов. Оно содержит свою копию интерпретатора Python, утилиты pip и установленные сторонние библиотеки.

Почему это важно:

  • Изоляция зависимостей: Разные проекты могут требовать разные версии одной и той же библиотеки без конфликтов.
  • Чистота глобального окружения: Глобальная установка Python остается незагроможденной проектными зависимостями.
  • Упрощение развертывания: Список зависимостей легко экспортируется в requirements.txt для воспроизводимости окружения на других машинах.

Пример создания и активации:

# Создание виртуального окружения с именем 'myenv'
python -m venv myenv

# Активация окружения (Linux/macOS)
source myenv/bin/activate

# Активация окружения (Windows PowerShell)
. myenvScriptsActivate.ps1

# Активация окружения (Windows Command Prompt)
myenvScriptsactivate.bat

После активации все пакеты, устанавливаемые через pip, будут помещены только в текущее виртуальное окружение. Для выхода из окружения используется команда deactivate.

Ответ 18+ 🔞

Слушай, а давай про эти ваши виртуальные окружения в Python, а то народ путается, как в тёмной комнате хуй с горы ищет.

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

Зачем это, спросишь? Да овердохуища причин:

  • Чтобы зависимости не дрались. В одном углу — Django версии 2.2, в другом — 4.0. И оба счастливы, как слоны в посудной лавке, потому что не знают друг о друге.
  • Чтобы глобальный Python не превратился в помойку. Ты же не хочешь, чтобы твоя система была засрана сотней библиотек, половину из которых ты уже и не помнишь зачем ставил?
  • Чтобы можно было сказать коллеге: «На, разверни». Сохранил список нужных пакетов в файлик requirements.txt, отдал, и у него всё встаёт как надо, без танцев с бубном и криков «а у меня работает!».

Ну и как этим пользоваться, ёпта? Всё проще, чем кажется:

# Создаёшь себе такую изолированную камеру хранения, назовём её 'myenv'
python -m venv myenv

# Теперь надо в неё залезть. На Линуксе или Маке — вот так:
source myenv/bin/activate

# Если ты с Винды и сидишь в PowerShell:
. myenvScriptsActivate.ps1

# А если в старой доброй командной строке (cmd), то вот так:
myenvScriptsactivate.bat

Как только активировал — ты внутри. Теперь все команды pip install будут ставить пакеты строго в эту песочницу, и глобальному Pythonу будет похуй. Закончил работать — просто напиши deactivate, и тебя выкинет обратно в реальный мир. Красота, а не жизнь!