Найти в Дзене

VENV питона и Conda - в чем разница

Часто встает вопрос — что лучше использовать, VENV питона, или ENV conda? И то, и другое - "виртуальное окружение питона", но между ними есть большая разница. Она заключается в принципе построения самого "окружения", предназначенного для изоляции запускаемого объекта от окружающего его другого программного обеспечения и других процессов. Рассмотрим каждый поподробнее. Называется оно "venv" как аббревиатура от "Virtual Environment" (виртуальное окружение) - это "менеджер среды" питона. В самом питоне, за это отвечает модуль с именем "venv", который устанавливается в питона как обычный модуль, так же как и модуль PIP. Он, обычно, уже включен в состав питона, и де-факто является его модулем виртуального окружения "по умолчанию". Примечание: в составе питона таких модулей несколько: venv, virtualenv, pipenv и т.п., и вы сами выбираете, каким именно воспользоваться. Основное его назначение — создать отдельный набор пакетов питона, отличный от системных пакетов, для какого-то отдельного прил
Оглавление

Часто встает вопрос — что лучше использовать, VENV питона, или ENV conda?

И то, и другое - "виртуальное окружение питона", но между ними есть большая разница. Она заключается в принципе построения самого "окружения", предназначенного для изоляции запускаемого объекта от окружающего его другого программного обеспечения и других процессов. Рассмотрим каждый поподробнее.

VEVN питона

Называется оно "venv" как аббревиатура от "Virtual Environment" (виртуальное окружение) - это "менеджер среды" питона.

В самом питоне, за это отвечает модуль с именем "venv", который устанавливается в питона как обычный модуль, так же как и модуль PIP. Он, обычно, уже включен в состав питона, и де-факто является его модулем виртуального окружения "по умолчанию".

Примечание: в составе питона таких модулей несколько: venv, virtualenv, pipenv и т.п., и вы сами выбираете, каким именно воспользоваться.

Основное его назначение — создать отдельный набор пакетов питона, отличный от системных пакетов, для какого-то отдельного приложения.

При этом, "окружение", которое он создает, не является самостоятельным "ответвлением" питона. Оно привязано к тому экземпляру питона, от которого оно выросло "как ветка" и не может существовать и работать отдельно он него (как и ветка не может жить без ствола).

Источником пакетов для VENV "по умолчанию" является "PyPi".

ENV conda

Conda является "менеджер пакетов и среды" любого языка программирования, и может создавать "изолированные среды" для любого поддерживаемого языка программирования (а не только питона), и управлять пакетами в них.

В питоне Conda Env (Conda Environment) создает "окружения" питона вместе со всеми пакетами, которое является самостоятельным экземпляром питона, содержит кроме пакетов питона еще и сам питон, и может работать самостоятельно, независимо от наличия на компьютере своего "родителя".

Такая папка, кроме самого питона с его пакетами, содержит еще и все модули Conda, которые ей необходимы для управления этим "окружением".

Источником пакетов в Conda являются любые подключаемые каналы, в том числе и "PyPi", в том числе и сам питон для Conda является "пакетом"и она может устанавливать любые версии самого питона.

Папка с таким "окружением" является "portable", т.е. переносимой и не привязанной к определенному месту в файловой системе.

Для сравнения можно провести такую аналогию:

  • пакет VENV создает "ветки на дереве питона"
  • пакет Conda создает "клоны питона"

Именно поэтому сгенерированные с помощью Conda "окружения" больше по объему.

Это и есть основное и фундаментальное различие между VENV и Conda.

Удачи!
NStor
https://t.me/stable_cascade_rus
https://t.me/srigert