Каковы преимущества упаковки вашей библиотеки / приложения python в файл .egg? - PullRequest
27 голосов
/ 07 сентября 2008

Я читал о файлах .egg и заметил их в своем каталоге lib, но каковы преимущества / недостатки использования в качестве разработчика?

Ответы [ 6 ]

30 голосов
/ 07 сентября 2008

Из сообщества Python Enterprise Application Kit :

"Яйца для питонов, как банки для Явы ..."

Яйца питона - способ связывания дополнительная информация с Python проект, который позволяет проекту зависимости должны быть проверены и удовлетворены во время выполнения, а также позволяет проектам предоставлять плагины для других проектов. Есть несколько двоичные форматы, которые воплощают яйца, но наиболее распространенным является ZIP-файл '.egg' формат, потому что это удобный для распространения проектов. Все поддержка форматов, включая специфичные для пакета данные, для всего проекта метаданные, расширения C и Python Код.

Основные преимущества яиц Python являются:

  • Они включают такие инструменты, как менеджер пакетов Python "Easy Install"

  • .egg файлы - это формат "нулевой установки" для Python пакет; нет стадии сборки или установки требуется, просто положите их на PYTHONPATH или sys.path и используйте их (может потребоваться время выполнения установлено, если расширения C или файлы данных используются)

  • Они могут включать метаданные пакета, такие как другие яйца, от которых они зависят

  • Они допускают "пакеты пространства имен" (пакеты, которые просто содержат другие пакеты) для разделения на отдельные распределения (например, zope. , витые. , пиковые. * пакеты могут быть распространены как отдельные яйца, в отличие от обычных пакетов который всегда должен быть помещен под тот же родительский каталог. Это позволяет какие сейчас огромные монолитные пакеты распространяться как отдельный компоненты.)

  • Они позволяют приложениям или библиотекам указывать необходимые версия библиотеки, так что вы можете например требуется ( «витой Интернет> = 2,0») перед выполнением импорта twisted.internet.

  • Это отличный формат для распространения расширений или плагинов для расширяемые приложения и рамки (например, Trac, который использует яйца для плагины по состоянию на 0.9b1), потому что яйцо среда выполнения предоставляет простые API для поиска яйца и найти их рекламируемую запись очки (похожие на Eclipse's понятие "точка расширения").

  • Есть и другие преимущества, которые могут быть получены от стандартизированной формат, аналогичный преимуществам Формат Java "jar".

-Adam

5 голосов
/ 13 октября 2008

Одно яйцо само по себе не лучше, чем правильный источник выпуска. Хорошей частью является обработка зависимостей. Как и пакеты debian или rpm, вы можете сказать, что зависите от других яиц, и они будут установлены автоматически (через pypi.python.org ).

Второй комментарий: сам формат яйца является двоичным упакованным форматом. Обычные пакеты python, которые состоят только из кода python, лучше всего распространять как «исходные выпуски», так что «python setup.py sdist», который приводит к .tar.gz. Их также обычно называют «яйца» при загрузке в Pypi.

Где вам нужны бинарные яйца: когда вы связываете расширение C-кода. Вам понадобится несколько бинарных яиц (32-битный Unix, Windows и т. Д.).

4 голосов
/ 07 сентября 2008

Яйца - довольно хороший способ распространения приложений на Python. Думайте об этом как о независимом от платформы файле .deb, который установит все зависимости и еще много чего. Преимущество в том, что его легко использовать для конечного пользователя. Недостатком является то, что упаковывать ваше приложение как файл .egg может быть неудобно.

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

3 голосов
/ 07 сентября 2008

.egg файлы - это, по сути, хороший способ развернуть ваше приложение на Python. Вы можете думать об этом как что-то вроде файлов .jar для Java.

Подробнее здесь .

1 голос
/ 26 сентября 2008

Для простых программ на Python вам, вероятно, не нужно использовать яйца. Распространение сырых .py файлов должно быть достаточно; Это похоже на распространение исходных файлов для GNU / Linux. Вы также можете использовать различные «упаковщики» ОС (например, py2exe или py2app) для создания .exe, .dmg или других файлов для разных операционных систем.

Более сложные программы, например Django, в значительной степени требуются яйца из-за различных необходимых модулей и зависимостей.

1 голос
/ 26 сентября 2008

Что бы вы ни делали, не прекращайте распространять ваше приложение также в виде tarball, так как это самый простой формат для пакетов для операционных систем с системой sysetem.

...