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)