В чем разница между pyenv, virtualenv, anaconda?

142

Я программист ruby, пытающийся изучать Python. Я симпатичная семья с pyenv, так как это как копия и вставка из rbenv. Pyenv позволяет иметь более одной версии python в системе, а также изолировать python, не касаясь чувствительной части системы.

Я полагаю, что каждая установка Python поставляется с пакетом pip. Что я до сих пор не понимаю, так это то, что есть много хороших библиотек Python, которые предлагают использовать эти virtualenv и anaconda. Я даже могу найти плагин virtualenv для pyenv.

Теперь я путаюсь с назначением этих двух pyenv и virtualenv. хуже внутри pyenv есть плагин virtualenv.

мои вопросы:

  • В чем разница между pyenv и virtualenv?
  • Есть ли разница в использовании команды pip внутри pyenv и virtualenv?
  • что делает этот pyenv virutalenv?

Ваше объяснение с примером будет высоко оценено.

Ханна Ли
источник
связанные с : stackoverflow.com/questions/29950300/...
чела
см. этот вопрос: отношения между virtualenv и pyenv
reza.bm

Ответы:

154

Edit: Это стоит упомянуть pipздесь, а, как condaи pipесть сходства и различия , которые имеют отношение к этой теме .

pip: менеджер пакетов Python.

  • Вы могли бы думать , pipкак питон эквивалент рубиновой gemкоманды
  • pip по умолчанию не входит в python.
  • Вы можете установить Python, используя homebrew , который установит pip автоматически:brew install python
  • Окончательная версия OSX по умолчанию не включала pip. Чтобы добавить pip в версию Python для вашей системы Mac, вы можетеsudo easy_install pip
  • Вы можете найти и опубликовать пакеты Python, используя PyPI: Индекс пакетов Python
  • Файл needs.txt сопоставим с ruby gemfile
  • Чтобы создать текстовый файл требований, pip freeze > requirements.txt
  • Обратите внимание, что на данный момент в нашей системе установлен python, и мы создали файл require.txt, в котором описаны все пакеты python, которые были установлены в вашей системе.

pyenv: менеджер версий Python

  • Из документации : pyenv позволяет легко переключаться между несколькими версиями Python. Это просто, ненавязчиво и следует традиции UNIX, состоящей из универсальных инструментов, которые хорошо выполняют одну задачу. Этот проект был разветвлен от rbenv и ruby-build и модифицирован для Python.
  • Многие люди не решаются использовать Python3 .
  • Если вам нужно использовать разные версии python, pyenvвы сможете легко управлять этим.

virtualenv: менеджер среды Python.

  • Из документов : Основная проблема, которая решается, - это зависимости, версии и косвенные разрешения. Представьте, что у вас есть приложение, которому требуется версия 1 LibFoo, но другому приложению требуется версия 2. Как вы можете использовать оба этих приложения? Если вы установите все в /usr/lib/python2.7/site-packages (или где-либо в другом месте вашей платформы), то легко оказаться в ситуации, когда вы непреднамеренно обновляете приложение, которое не следует обновлять.
  • Чтобы создать virtualenv, просто вызовите virtualenv ENV, где ENVнаходится каталог для размещения новой виртуальной среды.
  • Чтобы инициализировать virtualenv, вам нужно source ENV/bin/activate. Чтобы прекратить использование, просто позвоните deactivate.
  • После активации virtualenvвы можете установить все требования к пакетам рабочей области, запустив файл pip install -rпроекта requirements.txt.

Анаконда: Менеджер пакетов + Менеджер среды + Дополнительные научные библиотеки.

  • Из документов : Anaconda 4.2.0 включает в себя простую установку Python (2.7.12, 3.4.5 и / или 3.5.2) и обновления более 100 предварительно собранных и протестированных научно-аналитических пакетов Python, включая NumPy, Pandas , SciPy, Matplotlib и IPython, с более чем 620 пакетами, доступными через простойconda install <packagename>
  • Как веб-разработчик, я не использовал Anaconda. Это ~ 3 ГБ, включая все пакеты.
  • Есть уменьшенная minicondaверсия, которая кажется более простой, чем использование pip+ virtualenv, хотя у меня нет опыта ее использования лично.
  • Хотя condaпозволяет устанавливать пакеты, эти пакеты отличаются от пакетов PyPI, поэтому вам все равно может потребоваться дополнительно использовать pip в зависимости от типов пакетов, которые необходимо установить.

Смотрите также:

Уэйд Уильямс
источник
3
Возможно, теперь можно использовать обновление, cf stackoverflow.com/a/49084152/14420
Мэтт Уилки
9
Может ли это быть обновлено и включено в pipenv, так как в настоящее время это официально рекомендованный инструмент для упаковки Python от Python.org?
Волновой
1
В чем проблема с установкой простых библиотек на 3 ГБ? Вы не захотите развертывать все эти библиотеки, но только потому, что у вас установлены библиотеки на 3 ГБ, это не означает, что вам нужно развернуть все из них. И это небольшое количество места на жестком диске в эти дни. В настоящее время я использую установку anaconda, и они управляют моими средами с помощью venv, но я думал, стоит ли использовать conda и для моих виртуальных сред (я не думаю, что буду - venv мне кажется более плавным рабочим процессом).
Дэвид
@ Давид Я немного опоздал, но не могли бы вы рассказать о venv, который мне кажется более плавным ?
AMC
1

Простая аналогия:

  • pyenv ~ rbenv
  • pip ~ bundler
  • виртуальный env ~ gemset в rvm. Это может управляться компоновщиком напрямую, без использования gemset.

Поскольку я использую python3, я предпочитаю встроенную виртуальную среду python3 с именем venv . Venv прост и удобен в использовании. Я бы порекомендовал вам прочитать его официальные документы. Документ короткий и лаконичный.

В ruby ​​нам не нужна виртуальная среда, потому что об этом заботится пакет. И виртуальный env, и bundler великолепны, но у них разные концепции, но они пытаются решить одну и ту же проблему.

Ханна Ли
источник