Я новичок в Python и просто пытаюсь понять, как работают его пакеты. Предположительно, «яйца» являются своего рода механизмом упаковки, но каков будет краткий обзор их роли и может быть информация о том, почему они полезны и как их создать?
Примечание: упаковка для яиц была заменена упаковкой для колес.
То же самое понятие, что и .jar
файл в Java, это .zip
файл с переименованными файлами метаданных .egg
для распространения кода в виде пакетов.
В частности: внутренняя структура яиц Python
«Яйцо Python» - это логическая структура, воплощающая выпуск конкретной версии проекта Python, включающей его код, ресурсы и метаданные. Существует несколько форматов, которые можно использовать для физического кодирования яйца Python, и другие могут быть разработаны. Тем не менее, ключевым принципом яиц Python является то, что они должны быть обнаруживаемыми и импортируемыми. То есть приложение Python должно иметь возможность легко и эффективно выяснить, какие яйца присутствуют в системе, и гарантировать, что содержимое желаемых яиц можно импортировать.
.egg
Формат хорошо подходит для распределения и легкого удаления или обновления кода, так как проект, по существу , самодостаточным в пределах одного файла или каталога, unmingled с кодом или ресурсами любых других проектов. Это также позволяет одновременно устанавливать несколько версий проекта, так что отдельные программы могут выбирать версии, которые они хотят использовать.
.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, который позволяет проверять и удовлетворять зависимости проекта во время выполнения, а также позволяет проектам предоставлять плагины для других проектов. Существует несколько бинарных форматов, которые содержат яйца, но наиболее распространенным является формат .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 «jar».
«Яйцо» - это импортируемый формат распространения одного файла для проектов, связанных с Python.
«Краткое руководство по яйцам Python» отмечает, что «Яйца для питонов, как банки для Java ...»
Яйца на самом деле богаче, чем банки; они содержат интересные метаданные, такие как детали лицензирования, зависимости релизов и т. д.
источник