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