Я читал некоторые о файлах .egg, и я заметил их в моем каталоге lib, но каковы преимущества/недостатки использования тогда как разработчика?В чем преимущества упаковки вашей библиотеки/приложения python в виде файла .egg?
ответ
Python Enterprise Application Kit community От:
"Яйцо в питон, как баночки для Java ..."
Python яйцо способ пакетирования дополнительной информации с проектом Python, что позволяет проверять зависимости проекта и удовлетворять во время выполнения, а также , позволяя проектам предоставлять плагины для других проектов. Существует несколько двоичных форматов, которые олицетворяют яйца, но наиболее распространенным является формат .egg zipfile , потому что он является удобным для распространения проектов. Все форматы поддержки , включая данные пакета, общесистемные метаданные, расширения C и код Python .
Основные преимущества Python Яйца являются:
Они позволяют инструменты, как "Easy Install" Python менеджер пакетов
.egg файлы формата "нулевой установки" для Python упаковка; нет сборки или установки шага не требуется, просто положить их на PYTHONPATH или sys.path и использовать их (может потребоваться среды выполнения установленной, если расширения C используются или файлы данных)
Они могут включать в себя метаданные пакетов, такие, как другие яйца, они зависят от
они позволяют «пространство имен пакеты» (пакеты, которые содержат только другие пакетов) должны быть разделены на отдельные распределений (например, лещ. , скрученные., пик. * пакетов могут быть распределены как отдельные яйца, в отличие от обычных пакетов , которые всегда должны быть размещены под каталогом . Это позволяет , что теперь огромные монолитные пакеты быть распределены в виде отдельных компонентов .)
Они позволяют приложению или библиотеки, чтобы определить необходимую версии библиотеки, так что вы можете например, («Twisted-Internet> = 2.0») перед выполнением импорта twisted.internet.
Они большой формат для распространения расширений или плагинов для расширяемых приложений и каркасов (например, Trac, которая использует яйца для плагинов как 0.9b1), потому что яйцо runtime предоставляет простые API, чтобы найти яйца и найти их рекламируемую запись баллов (аналогично Eclipse's «точка расширения»).
Существуют также другие преимущества, которые могут быть получены из стандартного формата , аналогичного преимуществам Java-формата «jar».
-Adam
.egg файлы в основном хороший способ развертывания приложения питона. Вы можете думать об этом как о файле .jar для Java.
Дополнительная информация here.
Яйца - довольно хороший способ распространения приложений python. Подумайте об этом как независимом от платформы файле .deb, который установит все зависимости и еще много чего. Преимущество заключается в том, что он прост в использовании для конечного пользователя. Недостатком является то, что может быть громоздким, чтобы упаковать приложение в файл .egg.
Вы также должны предложить альтернативные способы установки в дополнение к .eggs. Есть некоторые люди, которым не нравится использовать яйца, потому что им не нравится идея программного обеспечения, устанавливающего любое программное обеспечение, которое оно хочет. Обычно они, как правило, являются типами sysadmin.
Независимо от того, что вы делаете, не прекращайте распространять ваше приложение, также как tarball, так как это самый простой упаковочный формат для операционных систем с пакетом sysetem.
Для простых программ Python вам, вероятно, не нужно использовать яйца. Распространение необработанных файлов .py должно быть достаточным; это как распространение исходных файлов для GNU/Linux. Вы также можете использовать различные «упаковщики» ОС (например, py2exe или py2app) для создания файлов .exe, .dmg или других файлов для разных операционных систем.
Более сложные программы, например. Django, в значительной степени требует яйца из-за различных модулей и необходимых зависимостей.
Одно яйцо само по себе не лучше, чем правильный выпуск источника. Хорошей частью является обработка зависимостей. Как и пакеты debian или rpm, вы можете сказать, что вы зависите от других яиц, и они будут установлены автоматически (через pypi.python.org).
Второй комментарий: сам формат яйца представляет собой двоичный упакованный формат. Обычные пакеты python, которые состоят только из кода python, лучше всего распределяются как «исходные выпуски», поэтому «python setup.py sdist», которые приводят к .tar.gz. Они также обычно называются «яйцами» при загрузке в pypi.
Где вам нужны бинарные яйца: когда вы связываете некоторое расширение кода C. Тогда вам понадобятся несколько бинарных яиц (32-разрядный одноименный, оконный и т. Д.).
Но что, если в зависимых пакетах Python не есть бинарные яйца, загруженные в PyPi? – Mitar 2012-06-15 15:23:30
Но что, если в зависимых пакетах Python не есть бинарные яйца, загруженные в PyPi? – Mitar 2012-06-15 15:24:04