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

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

5 ответов

Решение

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

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

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

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

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

.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

Отказ от ответственности: яйцо — это заброшенный формат пакета Python, инструменты для использования яиц больше не существуют.

Яйцо — это пакет Python. Это zip-архив, содержащий исходные файлы Python и/или скомпилированные библиотеки.

Формат не очень точно указывает, что он должен содержать или как создавать пакеты для разных версий Python и разных операционных систем, что является одной из причин, по которой он был заменен.

Формат появился примерно в 2004 году и использовался до середины 2010-х, затем полностью вытеснен wheelsа также pip install.

Яйца были установлены командой . Команда была удалена в setuptools v58.3 (2021 год). Вы больше не можете использовать яйца.

Если вы видите что-либо, что упоминает easy_installили же egg, будь то какие-либо ответы на переполнение стека или учебные пособия, он серьезно устарел.

Рекомендуйте этот более длинный ответ /questions/35619004/v-chem-raznitsa-mezhdu-pip-i-conda/58823172#58823172 для подробной истории упаковки Python. Речь идет о пунктах, колесах, яйцах и многом другом.

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

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

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

Яйца 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., Peak. *), Которые могут быть распределены как отдельные яйца, в отличие от обычных пакетов, которые всегда должны помещаться под одним и тем же пакетом. родительский каталог. Это позволяет распространять огромные монолитные пакеты как отдельные компоненты.)

  • Они позволяют приложениям или библиотекам указывать необходимую версию библиотеки, так что вы можете, например, потребовать ("Twisted-Internet>=2.0") перед выполнением импорта twisted.internet.

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

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

Другие вопросы по тегам