Как сделать управление пакетами Python?

Исходя из фона Node.js + npm, он действительно кошмарно пытается понять все, что связано с управлением пакетами Python. После нескольких часов исследований я наткнулся на все эти ключевые слова:

  • easy_install
  • virtualenv
  • зернышко
  • Setuptools
  • Distutils
  • PyPI
  • колесо
  • яйцо
  • сайт-пакеты

Может кто-нибудь помочь мне расшифровать эти термины и поставить их в историческом контексте? Например, «distutils был первым менеджером пакета, но он был заменен на X в Y, потому что Z».

Я абсолютно люблю Python (язык), но управление пакетами кажется настоящим кошмаром, чтобы учиться тому, кто использовал удивительные npm в течение последних нескольких лет.

2 Solutions collect form web for “Как сделать управление пакетами Python?”

Типы пакетов
Яйцо против Колеса против Ничего. То, что не подразумевается ни в том, что пакет python можно установить из своего «источника», не будучи упакованным как яйцо или колесо.

Утилиты для упаковки
Существует несколько библиотек, которые предоставляют утилиты для упаковки приложений python, включая distutils и setuptools. На этом уже есть отличная статья .

easy_install
Часть setuptools, позволяет создавать и устанавливать пакеты python. Часто разочаровался в пользу Пипа. Предназначен для упрощения установки пакетов, выполняя основную загрузку и перемещая их в нужное место для вас (отсюда и название).

зернышко
Менеджер пакетов для пакетов python и замена easy_install! См. Здесь по некоторым причинам, почему люди предпочитают это с помощью easy_install. Можете делать аккуратные вещи, например, устанавливать пакет непосредственно из репозитория git или компилировать расширения C на целевой машине. Последнее является спорным относительно того, желательно ли это, но тем не менее это хорошая функция, если вы этого хотите.

PyPI
Индекс пакета python, где easy_install и Pip ищут доступные пакеты, по умолчанию. В основном это гигантский онлайн-репозиторий модулей, которые принимаются сообществом.

virtualenv
Способ взлома переменных среды для «изоляции» установки python и связанных с ней модулей. Предпочитает Пип, потому что Иэн Бикинг написал им обоим. В основном, вы используете pip для установки virtualenv system wide, который затем позволяет создавать виртуальные среды python, каждый из которых имеет собственную копию python, pip и различных модулей. Это позволяет вам иметь несколько версий python или устанавливать модуль только для тестирования, не опуская вашу общесистемную установку python.

virtualenvwrapper
Действительно удобный сценарий оболочки, который упрощает создание и срывание виртуальных сред.

сайт-пакеты
Одно из поддерживаемых мест для установки модулей python. Живет где-то вроде /usr/lib/pythonX.X/site-packages . Существуют и другие поддерживаемые местоположения, такие как dist-packages или пользовательские местоположения.

Что все это значит для вас?
Я бы рекомендовал вам не обращать внимания на easy_install и просто использовать pip. Также всегда используйте virtualenv. Как правило, единственными модулями python, которые вы должны установить в системной среде на своей рабочей станции, являются pip и virtualenv. Я полностью игнорировал яйца и колеса, но если вы планируете профессионально распределять пакеты или размещать их на PyPI, вы, вероятно, захотите их исследовать. Кроме того, если вы создаете пакеты python, вам нужно научиться писать сценарий установки с помощью setuptools . Моя рекомендация – никогда не использовать distutils.

Еще несколько Чтений
Страница на python.org об упаковке, которая охватывает многие из этих тем
Упаковка Python это кошмар
Отличная статья, которая идет вразрез с наиболее распространенными рекомендациями, включая мои!

В параметрах, которые вы перечисляете, есть некоторое смешение:

  • virtualenv – используется для создания изолированных сред
  • site-packages – стандартное расположение, где находятся пакеты / libs python

  • pypi – это хранилище

  • easy_install – находится в пакете setuptools

  • pip – было написано для улучшения easy_install.

о яйцах питона

  • Как использовать Python 3 (3.5) в качестве интерпретатора по умолчанию в моей виртуальной среде?
  • Как вы устанавливаете свой pythonpath в уже созданном virtualenv?
  • Ошибки оболочки Virtualenv
  • Как использовать Python virtualenv
  • Как получить virtualenv для использования dist-пакетов на Ubuntu?
  • Как обновить sqlite3 в python 2.7.3 внутри virtualenv?
  • Использование (Ana) conda в PyCharm
  • Пакет Python установлен глобально, но не в virtualenv (PyGTK)
  • Python - лучший язык программирования в мире.