Каковы преимущества упаковки вашей библиотеки/приложения Python в файл .egg?

StackOverflow https://stackoverflow.com/questions/47953

Вопрос

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

Это было полезно?

Решение

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

«Яйца для питонов — то же самое, что банки для Java…»

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

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

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

  • .EGG -файлы представляют собой формат «нулевой установки» для пакета Python;Не требуется этап сборки или установки, просто поместите их на PythonPath или Sys.path и используйте их (может потребовать установленного времени выполнения, если используются расширения C или файлы данных)

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

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

  • Они позволяют приложениям или библиотекам указать необходимую версию библиотеки, так что вы можете напримерТребуется ("Twisted-Internet> = 2,0") перед тем, как сделать Import Twisted.Internet.

  • Они отличный формат для распределения расширений или плагинов для расширяемых приложений и рамок (например, TRAC, который использует яйца для плагинов на 0,9B1), потому что время выполнения яиц обеспечивает простые API для поиска яиц и найти их рекламируемые точки входа (аналогичные к концепции «Точка расширения» затмения).

  • Существуют также и другие преимущества, которые могут получить стандартизированный формат, аналогичный преимуществам формата Java «JAR».

-Адам

Другие советы

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

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

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

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

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

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

Больше информации здесь.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top