Сообщить об ошибке.

Что дает виртуальная среда исполнения в Python?

Необходимость использования виртуального окружения

Отличие virtualenv от модуля модуль venv.

virtualenv это инструмент для создания изолированных сред Python. Начиная с Python 3.5, его подмножество было интегрировано в стандартную библиотеку в модуле venv . Обратите внимание, что модуль venv не предоставляет все возможности этой библиотеки (например, не может создавать сценарии начальной загрузки, не может создавать виртуальные среды для других версий Python, кроме основного Python и т. д.). Большинство разработчиков, до сих пор предпочитают использовать virtualenv за простоту обновления через pip, унифицированную обработку различных версий Python и некоторые более продвинутые функции.

Что дает использование виртуального окружения.

Основная проблема, которую решают модули virtualenv и venv, это зависимости, версии и косвенные разрешения. Представьте, что есть приложение, которому требуется пакет Django версии 1.1.1, а другому приложению требуется версия 2.0.0. Как можно использовать оба этих приложения, если все устанавливается в /usr/lib/python3.7.4/site-packages или другое стандартное расположение Python на используемой системе. Здесь можно легко оказаться в ситуации, когда непреднамеренно обновляете пакет Django версии 1.1.1 до версии 2.0.0 и "сломаете" первое приложение (если, конечно, использовали функциональность, которую разработчики перестали поддерживать в новой версии пакета или переименовали какие то методы и функции).

Почему необходимо использовать виртуальное окружение.

  1. Любое изменение в библиотеках или версиях этих библиотек работающего или созданного приложения может нарушить его правильную работу.
  2. Особо актуально для UNIX систем, когда не рекомендуется устанавливать или обновлять пакеты в системном site-packages каталоге, из за возможного нарушения работы операционной системы.

Во всех этих случаях модули venv и virtualenv помогут тем, что создадут среду, которая имеет свои собственные установочные каталоги, не будут разделять библиотеки с другими средами venv и virtualenv и не будут иметь доступа к глобально установленным библиотекам.