Яка різниця між pyenv, virtualenv, anaconda?


142

Я рубіновий програміст, який намагається вивчити пітон. Я досить родина з pyenv, оскільки це як копія та вставка з rbenv. Pyenv допомагає дозволяти мати більше однієї версії python в системі, а також ізолювати python, не торкаючись чутливої ​​частини системи.

Я припускаю, що кожна установка python постачається з пакетом pip. Що я досі не розумію, так це те, що є багато хороших пітонних ліфтів, які пропонують використовувати цю віртуаленву та анаконду. Я навіть можу знайти плагін virtualenv для pyenv.

Тепер я плутаюсь з цілями цих двох pyenv та virtualenv. гірше всередині pyenv є плагін virtualenv.

мої запитання:

  • в чому різниця між pyenv і virtualenv?
  • Чи є різниця у використанні команди pip всередині pyenv та virtualenv?
  • що робить цей pyenv virutalenv?

ваше пояснення з прикладом буде високо оцінено.



дивіться це питання: відносини між virtualenv та pyenv
reza.bm

Відповіді:


154

Редагувати: Тут також варто згадати pip, як condaі pipмають подібності та відмінності, що стосуються цієї теми .

pip: менеджер пакунків Python.

  • Ви можете подумати pipяк еквівалент python gemкоманди ruby
  • pip за замовчуванням не входить до python.
  • Ви можете встановити Python за допомогою homebrew , який встановить pip автоматично:brew install python
  • Кінцева версія OSX за замовчуванням не включала pip. Щоб додати pip до версії python вашої системи Mac, ви можетеsudo easy_install pip
  • Ви можете знайти та опублікувати пакети python за допомогою PyPI: Індекс пакунків Python
  • Файл вимоги.txt можна порівняти з рубіном gemfile
  • Щоб створити текстовий файл з вимогами, pip freeze > requirements.txt
  • Зауважте, що в цей момент у нас в системі встановлено python, і ми створили файл requ.txt, який описує всі пакети python, які були встановлені у вашій системі.

pyenv: Менеджер версій Python

  • З docs : 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?
Wavesailor

1
У чому проблема встановлення бібліотек вартістю 3 Гб? Ви не хочете розгортати всі ці бібліотеки, але те, що у вас встановлено 3 ГБ бібліотек, не означає, що вам потрібно розгорнути всі. І це небагато місця на жорсткому диску в наші дні. Зараз я використовую інсталяцію анаконди, і вони керують моїм середовищем за допомогою venv, але я розглядав, чи використовувати conda для моїх віртуальних середовищ (я не думаю, що буду - venv здається мені більш плавним робочим процесом).
Девід

@David Я трохи запізнююся, але чи можна розширити на venv, здається, більш плавний робочий процес для мене ?
AMC

1

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

  • pyenv ~ rbenv
  • pip ~ bundler
  • віртуальна env ~ gemset в rvm. Цим може управляти постачальник безпосередньо без gemset.

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

У рубіні нам насправді не потрібне віртуальне середовище, оскільки постачальник піклується про це. І віртуальний env, і bundler чудові, але вони мають іншу концепцію, але вони намагаються вирішити ту саму проблему.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.