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

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

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

Ответ 1

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

Март 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).

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

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

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

Ошибка: не удалось найти vcvarsall.bat

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

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

Попытка исправить это один из самых популярных вопросов в Stack Overflow: "ошибка: не удалось найти 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 packages. RubyGems перечисляет пакеты 72k. Почтенный индекс пакета Python перечисляет всего 41k.

История

Полет перед лицом своих "включенных батарей "Девиз, Python отправлен без менеджера пакетов до 2014 года.

До Pip, стандартом de facto была команда easy_install. Это было ужасно неадекватно. Для удаления пакетов не было никакой команды.

Пип был значительным улучшением. У него было больше всего возможностей Ruby Gem. К сожалению, Пип был - до недавнего времени - иронически сложно установить. На самом деле проблема остается главным вопросом Python в Stack Overflow: "Как установить pip в Windows?"

Ответ 2

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

Ответ 3

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

Литература:

Ответ 4

Как разработчик и ученик Ruby и Perl-Python, я не нашел easy_install или pip эквивалентом RubyGems или CPAN.

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

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

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

Ответ 5

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

Ответ 6

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

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

Ответ 8

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

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

Ответ 9

Я не вижу ни MacPorts, либо Homebrew, упомянутые в других ответах здесь, но так как я вижу, что они упоминаются в другом месте в Qaru для связанных вопросов, я добавлю свои собственные US $0.02, которые многие люди считают MacPorts как не только менеджер пакетов для пакетов в целом (на сегодняшний день они перечисляют 16311 пакетов/портов, 2931 соответствует "python", хотя и только для Mac), но также как достойный (возможно, лучший) менеджер пакетов для пакетов/модулей Python:

Вопрос

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

Ответы

SciPy

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

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

Ответ 10

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

choco install python

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

choco install pip

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

pip install pyside
pip install ipython
...

Ответ 11

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

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

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

Функции Pipenv

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

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

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

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

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

Подробнее об этом вы можете прочитать здесь Pipenv.

Установка

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

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