Что такое яйцо Питона?
Я новичок в Python и просто пытаюсь понять, как работают его пакеты. Предположительно, "яйца" - это своего рода механизм упаковки, но что будет кратким обзором роли, которую они играют, и, возможно, некоторой информацией о том, почему они полезны и как их создавать?
Ответы
Ответ 1
Note: Egg packaging has been superseded by Wheel packaging.
Такая же концепция, как и у файла .jar
в Java, это файл .zip
с некоторыми файлами метаданных, переименованными в .egg
, для распространения кода в виде пакетов.
В частности: внутренняя структура яиц Python
"Яйцо питона" - это логическая структура, воплощающая конкретная версия проекта Python, включающая его код, ресурсы, и метаданные. Есть несколько форматов, которые можно использовать для физически кодировать яйцо Python, и другие могут быть разработаны. Тем не мение, Ключевым принципом яиц Python является то, что они должны быть обнаружены и ввоз. То есть приложение Python должно иметь возможность легко и эффективно выяснить, какие яйца присутствуют в системе, и чтобы гарантировать, что желаемое содержимое яиц импортируется.
Формат .egg
хорошо подходит для распространения и простого удаление или обновление кода, так как проект по сути автономный в одном каталоге или файле, без каких-либо код или ресурсы других проектов. Это также позволяет иметь несколько версий проекта установлены одновременно, так что отдельные программы могут выбирать версии, которые они хотят использовать.
Ответ 2
Файл .egg
является форматом распространения для пакетов Python. Это просто альтернатива дистрибутиву исходного кода или Windows exe
. Но учтите, что для чистого Python
файл .egg
полностью кросс-платформенный.
Сам файл .egg
представляет собой файл .zip
. Если вы измените расширение на "zip
", вы увидите, что он будет иметь папки внутри архива.
Кроме того, если у вас есть файл .egg
, вы можете установить его как пакет с помощью easy_install
Пример:
Чтобы создать файл .egg
для каталога, скажем mymath
, который может иметь несколько сценариев python, выполните следующий шаг:
# setup.py
from setuptools import setup, find_packages
setup(
name = "mymath",
version = "0.1",
packages = find_packages()
)
Затем из терминала выполните:
$ python setup.py bdist_egg
Это приведет к появлению большого количества выходов, но когда оно будет завершено, вы увидите, что у вас есть три новые папки: build, dist и mymath.egg-info. Единственная папка, о которой мы заботимся, - это папка dist, в которой вы найдете свой .egg
файл, mymath-0.1-py3.5.egg
с вашим номером версии python по умолчанию (мой здесь: 3.5)
Источник: Блог библиотеки Python
Ответ 3
Яйца Python - это способ связать дополнительную информацию с проектом Python, который позволяет проверять и удовлетворять зависимости проекта во время выполнения, а также позволяет проектам предоставлять плагины для других проектов. Существует несколько бинарных форматов, которые содержат яйца, но наиболее распространенным является формат zipfile '.egg', поскольку он удобен для распространения проектов. Поддерживаются все форматы, включая специфичные для пакета данные, метаданные всего проекта, расширения C и код Python.
Самый простой способ установки и использования яиц Python - это использование менеджера пакетов Python "Easy Install", который найдет, загрузит, соберет и установит яйца; все, что вам нужно сделать - это указать имя (и, необязательно, версию) проекта (ов) Python, которые вы хотите использовать.
Яйца Python могут использоваться с Python 2.3 и выше, и могут быть собраны с помощью пакета setuptools (см. "Песочницу" Python Subversion для исходного кода или страницу EasyInstall для текущих инструкций по установке).
Основные преимущества яиц Python:
Они включают такие инструменты, как менеджер пакетов Python "Easy Install"
Файлы .egg - это формат "нулевой установки" для пакета Python; этап сборки или установки не требуется, просто поместите их в PYTHONPATH или sys.path и используйте их (может потребоваться установленная среда выполнения, если используются расширения C или файлы данных)
Они могут включать в себя метаданные пакета, такие как другие яйца, от которых они зависят
Они позволяют разделять "пакеты пространства имен" (пакеты, которые просто содержат другие пакеты) на отдельные дистрибутивы (например, пакеты zope., Twisted., Peak. *), Которые могут быть распределены в виде отдельных яиц, в отличие от обычных пакетов, которые всегда должны быть помещены в один и тот же пакет. родительский каталог. Это позволяет распространять огромные монолитные пакеты как отдельные компоненты.)
Они позволяют приложениям или библиотекам указывать необходимую версию библиотеки, чтобы вы могли, например, требуют ("Twisted-Internet> = 2.0") перед импортом twisted.internet.
Они являются отличным форматом для распространения расширений или плагинов в расширяемых приложениях и инфраструктурах (таких как Trac, который использует яйца для плагинов начиная с 0.9b1), потому что среда выполнения яйца предоставляет простые API для поиска яиц и поиска их объявленных точек входа (аналогично затмить концепцию "точки расширения").
Существуют также другие преимущества, которые могут возникнуть из-за наличия стандартизированного формата, аналогичного преимуществам формата Java "jar".
Ответ 4
"Яйцо" - это импортируемый формат распространения одного файла для проектов, связанных с Python.
"Краткое руководство по яйцам Python" отмечает, что "яйца относятся к питонам, как банки к Java..."
Яйца на самом деле богаче, чем банки; они содержат интересные метаданные, такие как детали лицензирования, зависимости релизов и т.д.