Зачем использовать pip над easy_install?

Чирикать гласит:

Не используйте easy_install, если вам не нравится наносить удары по лицу. Используйте пип.

Зачем использовать pip над easy_install? Разве не в первую очередь связана с PyPI и авторами пакетов ? Если автор загружает архивный архив tar (например: отсутствующие файлы, без setup.py) в PyPI, то и pip, и easy_install не удастся. Почему же люди Python (например, в приведенном выше твитте), помимо косметических различий, сильно предпочитают pip над easy_install?

(Предположим, что мы говорим о easy_install из пакета Distribute, который поддерживается сообществом)

9 Solutions collect form web for “Зачем использовать pip над easy_install?”

Многие из ответов здесь устарели до 2015 года (хотя первоначально принятый от Даниэля Роземана нет). Вот текущее состояние вещей:

  • Бинарные пакеты теперь распространяются как диски ( .whl файлы) – не только на PyPI, но и в сторонних репозиториях, таких как Extension Packages от Christoph Gohlke для Windows . pip может обрабатывать колеса; easy_install не может.
  • Виртуальные среды (которые встроены в 3,4 или могут быть добавлены в версии 2.6 + / 3.1 + с virtualenv ) стали очень важным и выдающимся инструментом (и рекомендуется в официальных документах ); они включают вывод из коробки, но даже не работают с easy_install .
  • distribute пакет, включающий easy_install , больше не поддерживается. Его улучшения над setuptools снова слились в setuptools . Попытка установить distribute просто установит setuptools .
  • Сама easy_install только квази-поддерживается.
  • Все случаи, когда pip используемый, чтобы уступать easy_install -установке из распакованного дерева исходных текстов, из репо DVCS и т. Д., Давно исчезли; вы можете pip install . , pip install git+https:// .
  • pip поставляется с официальными пакетами Python 2.7 и 3.4+ от python.org, а загрузочный бокс по умолчанию включен, если вы строите из источника.
  • Различные неполные биты документации по установке, использованию и созданию пакетов были заменены руководством пользователя Python Packaging . Собственная документация Python по установке модулей Python теперь относится к этому руководству пользователя и явно вызывает pip как «предпочтительную программу установки».
  • Другие новые функции были добавлены в pip протяжении многих лет, которые никогда не будут в easy_install . Например, pip позволяет легко клонировать ваши пакеты сайтов, создавая файл требований и затем устанавливая его с помощью одной команды с каждой стороны. Или преобразовать файл требований в местное репо, чтобы использовать его для внутреннего развития. И так далее.

Единственная веская причина, по которой я знаю использовать easy_install в 2015 году, – это особый случай использования предустановленных версий Python от Apple с OS X 10.5-10.8. Начиная с 10.5, Apple включила easy_install , но по состоянию на 10.10 они все еще не включают pip . С 10.9+ вы все равно должны использовать get-pip.py , но для 10.5-10.8 у этого есть некоторые проблемы, поэтому проще sudo easy_install pip . (В общем, easy_install pip – плохая идея, и только для OS X 10.5-10.8 вы хотите это сделать.) Кроме того, 10.5-10.8 включает в себя readline таким образом, что easy_install знает, как клонировать, но pip не делает, поэтому вы также хотите, чтобы sudo easy_install readline если вы хотите его обновить.

Из собственного введения Яна Бика в pip :

pip был изначально написан для улучшения easy_install следующими способами

  • Все пакеты загружаются перед установкой. Частично завершенная установка не возникает.
  • Принять осторожность, чтобы представить полезный вывод на консоли.
  • Причины действий отслеживаются. Например, если пакет устанавливается, команда отслеживает, почему этот пакет требуется.
  • Сообщения об ошибках должны быть полезными.
  • Код является относительно кратким и сплоченным, что облегчает использование программно.
  • Пакеты не должны устанавливаться в виде архивов яйца, их можно установить ровно (сохраняя метаданные яйца).
  • Встроенная поддержка других систем управления версиями (Git, Mercurial и Bazaar)
  • Удаление пакетов.
  • Простое определение фиксированных наборов требований и надежное воспроизведение набора пакетов.

Другой – еще не названный – причина благоприятствования пипса заключается в том, что это новая жара и будет продолжать использоваться в будущем.

Инфографика ниже – из раздела « Текущее состояние упаковки » в «Руководстве по автостопу» в версии 1.0 – показывает, что setuptools / easy_install исчезнет в будущем.

введите описание изображения здесь

Вот еще одна инфографика из документации дистрибутива, показывающая, что Setuptools и easy_install будут заменены новым hotness- distribute и pip . В то время как пип по-прежнему является новой жаркой, Distributed объединился с Setuptools в 2013 году с выпуском Setuptools v0.7.

введите описание изображения здесь

Две причины, может быть больше:

  1. pip предоставляет команду uninstall

  2. если установка завершается неудачно в середине, пипс оставит вас в чистом состоянии.

ТРЕБОВАНИЯ.

Серьезно, я использую это совместно с virtualenv каждый день.


БУДУЩАЯ ЗАВИСИМОСТЬ УПРАВЛЕНИЯ, РУКОВОДСТВА

Файлы требований позволяют создавать моментальный снимок всех пакетов, которые были установлены через pip. Инкапсулируя эти пакеты в виртуальной среде, вы можете заставить свою кодовую базу работать с определенным набором пакетов и делиться этой кодовой базой с другими.

Из документации Heroku https://devcenter.heroku.com/articles/python

Вы создаете виртуальную среду и устанавливаете оболочку для ее использования. (инструкции bash / * nix)

 virtualenv env source env/bin/activate 

Теперь все скрипты python, запущенные с этой оболочкой, будут использовать пакеты и конфигурацию этой среды. Теперь вы можете установить пакет локально в эту среду, не устанавливая его на глобальном уровне на вашем компьютере.

 pip install flask 

Теперь вы можете сбросить информацию о том, какие пакеты установлены с

 pip freeze > requirements.txt 

Если вы проверили этот файл в контроле версий, когда кто-то еще получит ваш код, они могут настроить свою собственную виртуальную среду и установить все зависимости с помощью:

 pip install -r requirements.txt 

Каждый раз, когда вы можете автоматизировать скуку, это потрясающе.

pip не будет устанавливать бинарные пакеты и не будет хорошо протестирован в Windows.

Поскольку Windows не поставляется с компилятором по умолчанию, пип часто не может быть использован там. easy_install может устанавливать двоичные пакеты для Windows.

UPDATE: setuptools поглотил distribute а не наоборот, как думали некоторые. setuptools обновляется с последними изменениями distutils и distutils колес. Следовательно, easy_install и pip теперь более или менее равны.

Источник: http://pythonhosted.org/setuptools/merge-faq.html#why-setuptools-and-not-distribute-or-another-name

В дополнение к ответу fuzzyman:

pip не будет устанавливать бинарные пакеты и не будет хорошо протестирован в Windows.

Поскольку Windows не поставляется с компилятором по умолчанию, пип часто не может быть использован там. easy_install может устанавливать двоичные пакеты для Windows.

Вот трюк в Windows:

  • вы можете использовать easy_install <package> для установки бинарных пакетов, чтобы избежать создания двоичного кода

  • вы можете использовать pip uninstall <package> даже если вы использовали easy_install.

Это просто работа, которая работает для меня на окнах. На самом деле, я всегда использую pip, если не задействованы никакие двоичные файлы.

См. Текущую версию документации: http://www.pip-installer.org/en/latest/other-tools.html#pip-compared-to-easy-install

Я спрошу в списке рассылки, что планируется для этого.

Вот последнее обновление:

Новый поддерживаемый способ установки бинарных файлов – это wheel ! Это еще не стандарт, но почти. Текущая версия по-прежнему является альфа: 1.0.0a1

https://pypi.python.org/pypi/wheel

http://wheel.readthedocs.org/en/latest/

Я проведу wheel , создав установщик OS X для PySide используя wheel вместо яиц. Вернется и сообщит об этом.

приветствия – Крис

Быстрое обновление:

Переход к wheel почти закончился. Большинство пакетов поддерживают wheel .

Я обещал собрать колеса для PySide , и я сделал это прошлым летом. Прекрасно работает!

СОВЕТ. Некоторым разработчикам удалось до сих пор поддерживать формат колес, просто потому, что они забывают заменить distutils на setuptools . Часто такие преобразования можно легко преобразовать, заменив это единственное слово в setup.py .

Просто встретился с одним специальным случаем, когда мне пришлось использовать easy_install вместо pip , или мне нужно напрямую извлекать исходные коды.

Для пакета GitPython версия в pip слишком старая, то есть 0.1.7 , а одна из easy_install – последняя, ​​которая равна 0.3.2.rc1 .

Я использую Python 2.7.8 . Я не уверен в механизме подкладок easy_install и pip , но по крайней мере версии некоторых пакетов могут отличаться друг от друга, а иногда easy_install – это версия с более новой версией.

 easy_install GitPython 
  • Последний «pip» не работает с «требует setuptools> = 0.8 для dist-info»
  • Каков наилучший способ распространения пакета Python, который требует минимальной версии Python
  • Могут ли устанавливать установки PP, не указанные в setup.py во время установки?
  • Как запустить набор тестов в python setup.py
  • Как включить статические файлы в setuptools - пакет python
  • setuptools против distutils: Почему distutils все еще вещь?
  • Структура пакета Python, setup.py для запуска модульных тестов
  • Доступ к файлам данных до и после distutils / setuptools
  • Python - лучший язык программирования в мире.