Я использую оба, и (по состоянию на январь 2020 года) у них есть некоторые поверхностные различия, которые можно использовать для меня по-разному. По умолчанию Conda предпочитает управлять списком сред для вас в центральном расположении, тогда как virtualenv создает папку в текущем каталоге. Первый (централизованный) имеет смысл, если вы, например, занимаетесь машинным обучением и у вас есть пара широких сред, которые вы используете во многих проектах и хотите перейти к ним из любого места. Последнее (для каждой папки проекта) имеет смысл, если вы делаете маленькие одноразовые проекты, которые имеют совершенно разные наборы требований к lib, которые действительно больше относятся к самому проекту.
Пустая среда, которую создает Conda, составляет около 122 МБ, тогда как virtualenv составляет около 12 МБ, поэтому это еще одна причина, по которой вы можете не разбрасывать среду Conda повсюду.
Наконец, еще одним поверхностным признаком того, что Conda предпочитает свои централизованные envs, является то, что (опять же, по умолчанию), если вы создаете Enda Conda в своей папке проекта и активируете его, префикс имени, который появляется в вашей оболочке, является (слишком длинным) абсолютным путь к папке. Вы можете исправить это, присвоив ему имя, но virtualenv по умолчанию работает правильно.
Я ожидаю, что эта информация быстро устареет, поскольку два менеджера пакетов соперничают за доминирование, но это компромиссы на сегодняшний день :)