Есть ли в Python система управления пакетами / модулями?

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

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

13 ответов

Решение

Недавний прогресс

Март 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 перечисляет 72 тыс. Пакетов. Почтенный индекс пакета Python перечисляет только 41 КБ.

история

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

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

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

Индекс пакетов 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

Рекомендации:

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

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

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

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

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

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

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

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

Это было бы просто

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

Вы можете найти каталог на http://pypi.python.org/

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

Вопрос

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

ответы

SciPy

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

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

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

choco install python

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

choco install pip

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

pip install pyside
pip install ipython
...

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

Как уже упоминалось @ColonelPanic, существует несколько проблем с индексом пакетов Python, а также с pip и virtualenv.

Pipenv решает большинство проблем с pip, а также предоставляет дополнительные функции.

Особенности Pipenv

Pipenv предназначен для замены pip и virtualenv, что означает, что pipenv автоматически создаст отдельную виртуальную среду для каждого проекта, что позволит избежать конфликтов между различными версиями Python / версиями пакетов для разных проектов.

  • Позволяет действительно детерминированные сборки, в то же время легко указав только то, что вы хотите.
  • Создает и проверяет хэши файлов на наличие заблокированных зависимостей.
  • Автоматическая установка необходимых питонов, если доступен pyenv.
  • Автоматически находит ваш проект дома, рекурсивно, при поиске Pipfile.
  • Автоматически генерирует Pip-файл, если он не существует.
  • Автоматически создает virtualenv в стандартном месте.
  • Автоматически добавляет / удаляет пакеты в Pipfile, когда они не установлены / установлены.
  • Автоматически загружает файлы.env, если они существуют.

Если вы раньше работали над проектами Python, вы бы поняли, что эти функции упрощают управление пакетами.

Другие Команды

  • check проверяет уязвимости безопасности и утверждает, что текущая среда соответствует требованиям PEP 508. (что, я думаю, является отличной особенностью, особенно после этого - вредоносные пакеты на PyPi)
  • graph покажет вам график зависимостей ваших установленных зависимостей.

Вы можете прочитать больше об этом здесь - Pipenv.

Монтаж

Вы можете найти документацию по установке здесь

PS: Если вам понравилась работа с запросами пакета Python, вам было бы приятно узнать, что pipenv от того же разработчика Кеннета Рейтца

Поэзия это то, что вы ищете. Он заботится об управлении зависимостями, виртуальных средах, работе.

В 2019 году поэзия - это менеджер пакетов и зависимостей, который вы ищете.

https://github.com/sdispater/poetry

Это современно, просто и надежно.

Другие вопросы по тегам