Есть ли в Python система управления пакетами / модулями? - PullRequest
142 голосов
/ 13 марта 2010

Есть ли в Python система управления пакетами / модулями, аналогично тому, как в Ruby есть рубины, где вы можете сделать gem install packagename?

Вкл. Установка модулей Python , я вижу только ссылки на python setup.py install, но для этого требуется сначала найти пакет.

Ответы [ 13 ]

210 голосов
/ 19 ноября 2012

Последние достижения

Март 2014 : Хорошие новости! Python 3.4 поставляется с Pip. Pip уже давно является стандартным менеджером пакетов Python. Вы можете установить пакет следующим образом:

pip install httpie

Wahey! Это лучшая особенность любого выпуска Python. Это делает сообщество доступным для всех. Новички больше не исключаются из использования общественных библиотек из-за чрезмерной сложности установки.

Однако , остается ряд выдающихся разочарований от опыта упаковки Python. Кумулятивно, они делают Python очень нежелательным для новичков. Кроме того, долгая история пренебрежения (т. Е. Отсутствие доставки с менеджером пакетов в течение 14 лет с Python 2.0 до Python 3.3) нанесла ущерб сообществу. Я опишу оба ниже.

Выдающиеся разочарования

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

Сайт PyPI не помогает

Каждый язык с менеджером пакетов имеет официальный (или квазиофициальный) репозиторий для сообщества, чтобы загружать и публиковать пакеты. Python имеет индекс пакета Python, PyPI. https://pypi.python.org/pypi

Давайте сравним его страницы со страницами RubyGems и Npm (менеджер пакетов Node).

  1. https://rubygems.org/gems/rails Страница RubyGems для пакета rails
  2. https://www.npmjs.org/package/express Страница Npm для пакета express
  3. https://pypi.python.org/pypi/simplejson/ Страница PyPI для пакета simplejson

Вы увидите, что страницы RubyGems и Npm начинаются с однострочного описания пакета, а затем с большими дружескими инструкциями по его установке.

Между тем, горе любому несчастному пользователю Python, который наивно обращается к PyPI. На https://pypi.python.org/pypi/simplejson/ они не найдут таких полезных инструкций. Тем не менее, есть большая зеленая ссылка «Скачать». Это не лишено смысла следовать этому. Ага, они кликают! Их браузер загружает файл .tar.gz. Многие пользователи Windows не могут даже открыть его, но если они упорствуют, они могут в конечном итоге извлечь его, а затем запустить setup.py и в конечном итоге с помощью Google setup.py install. Некоторые сдаются и заново изобретают колесо ..

Конечно, все это неправильно. Самый простой способ установки пакета - использовать команду Pip. Но PyPI даже не упомянул Pip. Вместо этого он повел их по архаичному и утомительному пути.

Ошибка: невозможно найти vcvarsall.bat

Numpy - одна из самых популярных библиотек Python. Попробуйте установить его с Pip, вы получите это загадочное сообщение об ошибке:

Ошибка: невозможно найти vcvarsall.bat

Попытка исправить это один из самых популярных вопросов о переполнении стека: « ошибка: невозможно найти vcvarsall.bat »

Мало кто преуспевает.

Для сравнения, в той же ситуации Ruby печатает это сообщение, которое объясняет, что происходит и как это исправить:

Пожалуйста, обновите ваш PATH, чтобы включить инструменты сборки, или загрузите DevKit с http://rubyinstaller.org/downloads и следуйте инструкциям на http://github.com/oneclick/rubyinstaller/wiki/Development-Kit

Публикация пакетов сложна

Ruby и Nodejs поставляются с полнофункциональными менеджерами пакетов, Gem (с 2007 года) и Npm (с 2011 года), и создали сообщества для обмена, сосредоточенные вокруг GitHub. Npm делает публикацию пакетов столь же простым, как и их установку, он уже имеет 64k пакетов . Списки RubyGems 72k пакетов . Достопочтенный индекс пакетов Python только 41k .

История

Вопреки своему девизу " в комплекте ", Python поставлялся без менеджера пакетов до 2014 года.

До Пипа стандартом де-факто была команда easy_install. Это было ужасно неадекватно. Не было команды для удаления пакетов.

Пип был огромным улучшением. У этого были большинство особенностей Рубинового Драгоценного камня. К сожалению, Pip до недавнего времени было нелегко установить. На самом деле проблема остается главным вопросом Python о переполнении стека: « Как мне установить pip в Windows? »

64 голосов
/ 02 сентября 2012

Индекс пакетов Python (PyPI) представляется стандартным:

  • Кому установить пакет: pip install MyProject
  • до обновление пакет pip install --upgrade MyProject
  • К исправить версию пакета pip install MyProject==1.0

Вы можете установить менеджер пакетов следующим образом:

curl -O http://python-distribute.org/distribute_setup.py
python distribute_setup.py
easy_install pip

Ссылки:

63 голосов
/ 13 марта 2010

И чтобы обеспечить контраст, есть также pip .

21 голосов
/ 13 марта 2010

Как разработчик Ruby и Perl и парень, изучающий Python, я не нашел, что easy_install или pip эквивалентны RubyGems или CPAN.

Я склоняюсь к тому, чтобы мои системы разработки работали с последними версиями модулей по мере их обновления разработчиками, и замораживали мои производственные системы в установленных версиях. Как RubyGems, так и CPAN позволяют легко находить модули, перечисляя имеющиеся возможности, а затем, при желании, устанавливать и обновлять их по отдельности или сразу.

easy_install и pip упрощают установку модуля, РАЗ. Я нашел его с помощью поиска в браузере или узнал о нем другими способами, но они не скажут мне, что доступно. Я могу явно назвать модуль, который будет обновлен, но приложения не будут сообщать мне, что было обновлено, и не будут обновлять все оптом, если я захочу.

Итак, базовая функциональность есть в pip и easy_install, но отсутствуют некоторые функции, которые хотелось бы видеть, чтобы сделать их более удобными и простыми в использовании и наравне с CPAN и RubyGems.

13 голосов
/ 13 марта 2010

Есть как минимум два, easy_install и его преемник pip .

11 голосов
/ 18 декабря 2014

По крайней мере, в конце 2014 года следует рассмотреть Anaconda Continuum Analytics 'Python с менеджером пакетов conda . Он решает большинство серьезных проблем, с которыми люди сталкиваются в целом с Python (управление различными версиями Python, обновление версий Python, управление пакетами, виртуальные среды, совместимость с Windows / Mac) в одной последовательной загрузке.

Это позволяет вам делать практически все, что вы могли бы захотеть с Python, без необходимости менять систему вообще. Мое следующее предпочтительное решение - pip + virtualenv, но вам нужно либо установить virtualenv в системный Python (и ваша системная версия Python может не соответствовать нужной версии), либо build from source . Анаконда делает весь этот процесс одним нажатием кнопки, а также добавляет множество других функций.

6 голосов
/ 13 марта 2010

Это называется setuptools. Вы запускаете его с помощью команды easy_install.

Каталог можно найти по адресу http://pypi.python.org/

6 голосов
/ 13 марта 2010

Это будет easy_install .

4 голосов
/ 06 июня 2014

В Windows установите http://chocolatey.org/, затем

choco install python

Открыть новое cmd-окно с обновленным PATH. Далее сделайте

choco install pip

После этого вы можете

pip install pyside
pip install ipython
...
4 голосов
/ 12 января 2013

Я не вижу ни MacPorts , ни Homebrew , упомянутых в других ответах здесь, но, поскольку я вижу, что они упоминаются в других местах на Stack Overflow для связанных вопросов, я добавлю свой владеют 0,02 долл. США, которые многие считают MacPorts не только менеджером пакетов для пакетов в целом (на сегодняшний день они перечисляют 16311 пакетов / портов, 2931 соответствует «python», хотя и только для Mac), но также как достойный (возможно, лучший) менеджер пакетов для пакетов / модулей Python:

Вопрос

"... какой метод используют разработчики Mac Python для управления своими модулями?"

Ответы

SciPy

"Mac (в отличие от Linux) не поставляются с менеджером пакетов, но есть несколько популярных менеджеров пакетов, которые вы можете установить. MacPorts ... "

Я все еще спорю о том, стоит ли использовать MacPorts самостоятельно, но в данный момент я склоняюсь в этом направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...