Я кое-что читал о файлах .egg и заметил их в своем каталоге lib, но каковы преимущества/недостатки их использования в качестве разработчика?
Каковы преимущества упаковки вашей библиотеки/приложения Python в виде файла .egg?
Ответы (6)
Из сообщества Python Enterprise Application Kit:
"Яйца для питонов то же, что банки для Java..."
Яйца Python — это способ объединения дополнительной информации с проектом Python, который позволяет проверять и удовлетворять зависимости проекта во время выполнения, а также позволяет проектам предоставлять подключаемые модули для других проектов. Существует несколько двоичных форматов, в которых содержатся яйца, но наиболее распространенным является формат zip-файла «.egg», поскольку он удобен для распространения проектов. Поддерживаются все форматы, включая данные для конкретных пакетов, метаданные для всего проекта, расширения C и код Python.
Основные преимущества Python Eggs:
Они включают такие инструменты, как менеджер пакетов Python Easy Install.
Файлы .egg представляют собой формат «нулевой установки» для пакета Python; не требуется никаких шагов сборки или установки, просто поместите их в PYTHONPATH или sys.path и используйте их (может потребоваться установленная среда выполнения, если используются расширения C или файлы данных)
Они могут включать метаданные пакетов, например, другие яйца, от которых они зависят.
Они позволяют разделять «пакеты пространства имен» (пакеты, которые просто содержат другие пакеты) на отдельные дистрибутивы (например, пакеты zope., twisted., pick.* могут распространяться как отдельные яйца, в отличие от обычных пакетов, которые должны всегда размещаться в одном и том же родительском каталоге, что позволяет распространять огромные монолитные пакеты как отдельные компоненты.)
Они позволяют приложениям или библиотекам указывать необходимую версию библиотеки, чтобы вы могли, например. require("Twisted-Internet>=2.0") перед выполнением импорта twisted.internet.
Это отличный формат для распространения расширений или подключаемых модулей для расширяемых приложений и фреймворков (таких как Trac, который использует яйца для подключаемых модулей начиная с версии 0.9b1), поскольку среда выполнения яиц предоставляет простые API-интерфейсы для обнаружения яиц и их объявленных точек входа (аналогично к концепции «точки расширения» Eclipse).
Имеются и другие преимущества стандартизированного формата, аналогичные преимуществам формата "jar" в Java.
-Адам
Одно яйцо само по себе не лучше, чем правильный исходный код. Хорошая часть — это обработка зависимостей. Подобно пакетам 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 или других файлов для разных операционных систем.
Более сложные программы, например. Джанго, в значительной степени требуют яйца из-за различных требуемых модулей и зависимостей.