virtualenv
позволяет создавать пользовательские установки Python, например, в подкаталоге вашего проекта. Таким образом, каждый из ваших проектов может иметь свои собственные python
(или даже несколько) под их соответствующим virtualenv. Для некоторых / всех virtualenv совершенно нормально иметь одну и ту же версию python
(например, 2.7.16) без конфликтов - они живут отдельно и не знают друг друга. Если вы хотите использовать какой-либо из этих пунктов python
, вы должны activate
это сделать (запустив скрипт, который временно изменит ваш файл, PATH
чтобы убедиться, что bin/
каталог virtualenv стоит первым). С этого момента вызов python
(или pip
т. Д.) Будет вызывать версию virtualenv до тех пор, пока вы deactivate
ее не восстановите PATH
.
pyenv
работает в более широком масштабе, чем virtualenv
- он содержит регистр установок Python (и может использоваться для установки новых) и позволяет вам настроить, какую версию Python запускать при использовании python
команды. Звучит похоже, но практическое использование немного другое. Он работает, добавляя свой python
скрипт- шим к вашему PATH
(навсегда), а затем решая, какой «реал» python
вызывать. Вы даже можете настроить pyenv для вызова одного из ваших питонов virtualenv (используя pyenv-virtualenv
плагин). Версии Python, которые вы устанавливаете с помощью, pyenv
идут в его $(pyenv root)/versions/
каталог (по умолчанию root для pyenv - ~ / .pyenv), поэтому они более «глобальны», чем virtualenv. Обычно вы не можете дублировать версии Python, установленные через pyenv
, по крайней мере, это не главная идея.
Чтобы создать virtualenv с определенной версией Python, вам нужно иметь эту версию где-то в вашей системе (независимо от того, PATH
включена она или нет) и по существу клонировать ее в ваш недавно созданный virtualenv. Конечно, один из способов получить определенную версию - это установить ее через pyenv
. Как только это будет сделано, отдельные virtualenv могут свободно расходиться, установив в них различные модули (или их версии).
Коротко:
virtualenv
позволяет создавать локальные, независимые установки Python путем клонирования из существующих
pyenv
позволяет устанавливать разные версии python одновременно (либо для всей системы, либо только для локального пользователя), а затем выбирать, какой из множества питонов запускаться в любой момент времени (включая те, которые созданы virtualenv или Anaconda)