virtualenvдозволяє створити власну установку Python, наприклад, у підкаталозі проекту. Кожен з ваших проектів може мати власні python(або навіть декілька) своїх відповідних віртуалів. Для деяких / всіх virtualenvs цілком чудово навіть мати одну і ту ж версію python(наприклад, 2.7.16) без конфлікту - вони живуть окремо і не знають один одного. Якщо ви хочете використовувати будь-який з цих pythons, вам доведеться activateце (запустивши скрипт, який тимчасово змінить ваш, PATHщоб переконатися, що цей bin/каталог virtualenv стає першим). З цього моменту виклик python(або pipін.) Буде викликати версію цього virtualenv до тих пір, поки ви deactivateїї не відновите PATH.
pyenvпрацює в більш широкому масштабі, ніж virtualenv- він містить реєстр установок Python (і їх можна використовувати для встановлення нових) і дозволяє налаштувати, яку версію Python запускати при використанні pythonкоманди. Звучить схоже, але практичне використання дещо інше. Він працює, попередньо додавши свій pythonскрипт shim до вашого PATH(назавжди), а потім вирішить, до якого "справжнього" слід pythonзвернутися. Ви навіть можете налаштувати pyenv, щоб зателефонувати в один із ваших virtualenv пітонів (використовуючи pyenv-virtualenvплагін). Версії Python, які ви встановлюєте за допомогою, pyenvперейдіть до його $(pyenv root)/versions/каталогу (за замовчуванням, root pyenv ~ / .pyenv), тому вони є більш "глобальними", ніж virtualenv. Зазвичай ви не можете копіювати встановлені через Python версії pyenv, принаймні, це не головна ідея.
Щоб створити virtualenv з певною версією Python, вам потрібно мати цю версію десь у вашій системі (чи є вона PATHчи ні) і по суті клонувати її у ваш щойно створений virtualenv. Звичайно, один із способів отримати певну версію - це встановити її через pyenv. Після цього окремі віртуоли можуть вільно розходитися, встановивши в них різні модулі (або їх версії).
Коротко:
virtualenv дозволяє створювати локальні, незалежні установки python шляхом клонування з існуючих
pyenv дозволяє встановлювати різні версії python одночасно (на загальну систему або просто для місцевого користувача), а потім вибирати, який із безлічі пітонів запускати в будь-який момент часу (включаючи версії, створені virtualenv або Anaconda)