Что такое яйцо питона? - PullRequest
       6

Что такое яйцо питона?

472 голосов
/ 12 января 2010

Я новичок в Python и просто пытаюсь понять, как работают его пакеты.Предположительно, «яйца» - это своего рода упаковочный механизм, но каков будет краткий обзор их роли и, возможно, некоторая информация о том, почему они полезны и как их создать?

Ответы [ 4 ]

479 голосов
/ 12 января 2010

Примечание: Упаковка для яиц заменена Упаковкой для колес.

То же понятие, что и файл .jar в Java, это файл .zip с некоторыми файлами метаданных, переименованными в .egg, для распространения кода в виде пакетов.

В частности: внутренняя структура яиц Python

«Яйцо питона» - это логическая структура, воплощающая конкретная версия проекта Python, включающая его код, ресурсы, и метаданные. Есть несколько форматов, которые можно использовать для физически кодировать яйцо Python, и другие могут быть разработаны. Тем не мение, Ключевым принципом яиц Python является то, что они должны быть обнаружены и ввоз. То есть приложение Python должно иметь возможность легко и эффективно выяснить, какие яйца присутствуют в системе, и чтобы гарантировать, что желаемое содержимое яиц импортируется.

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

63 голосов
/ 14 июня 2016

Файл .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-инфо . Единственная папка, о которой мы заботимся - это папка dist , в которой вы найдете файл .egg, mymath-0.1-py3.5.egg с номером версии по умолчанию для Python (установка) (мой здесь: 3,5)

Источник: Блог библиотеки Python

2 голосов
/ 13 августа 2018

Яйца Python - это способ связать дополнительную информацию с проектом Python, который позволяет проверять и удовлетворять зависимости проекта во время выполнения, а также позволяет проектам предоставлять плагины для других проектов. Существует несколько бинарных форматов, которые содержат яйца, но наиболее распространенным является формат .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-Internet> = 2.0") перед импортом twisted.internet.

  • Это отличный формат для распространения расширений или плагинов для расширяемых приложений и сред (таких как Trac, который использует яйца для плагинов начиная с 0.9b1), потому что среда выполнения яйца предоставляет простые API для поиска яиц и поиска их объявленные точки входа (аналогично концепции Eclipse «точка расширения»).

Существуют и другие преимущества, связанные с использованием стандартизированного формата, аналогичные преимуществам формата jar в Java.

1 голос
/ 26 февраля 2018

«Яйцо» - это импортируемый формат распространения одного файла для проектов, связанных с Python.

«Краткое руководство по яйцам Python» отмечает, что «Яйца относятся к питонам, как банки к Java ...»

Яйца на самом деле богаче банок; они содержат интересные метаданные, такие как детали лицензирования, зависимости релиза и т. д.

...