virtualenv
дозволяє створити власну установку Python, наприклад, у підкаталозі проекту. Кожен з ваших проектів може мати власні python
(або навіть декілька) своїх відповідних віртуалів. Для деяких / всіх virtualenvs цілком чудово навіть мати одну і ту ж версію python
(наприклад, 2.7.16) без конфлікту - вони живуть окремо і не знають один одного. Якщо ви хочете використовувати будь-який з цих python
s, вам доведеться 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)