Відповіді:
Це ж поняття, що і .jar
файл у Java, це .zip
файл з деякими файлами метаданих, перейменованими .egg
для розповсюдження коду у вигляді пакетів.
Зокрема: Внутрішня структура яєць Пітона
"Яйце 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, який дозволяє перевіряти та задовольняти залежність проекту під час виконання, а також дозволяє проектам надавати плагіни для інших проектів. Є кілька бінарних форматів, які втілюють яйця, але найпоширенішим є zipfile-формат '.egg', оскільки це зручний для розповсюдження проектів. Усі формати підтримують, включаючи дані, що стосуються конкретного пакету, метадані, що стосуються проекту, розширення C та код Python.
Найпростіший спосіб встановлення та використання яєць Python - це використання менеджера пакетів Python "Easy Install", який знайде, завантажить, створить та встановить яйця для вас; все, що ви робите, - це сказати ім’я (і необов'язково, версію) проекту Python, який ви хочете використовувати.
Яйця Python можна використовувати з Python 2.3 та новіших версій, а також їх можна побудувати за допомогою пакета setuptools (див. Вихідний код програми Subtsion 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.
"Яйце" - це однофайловий формат розповсюдження для файлів, пов'язаних з Python.
"Швидкий посібник з яйцями Python" зазначає, що "Яйця є пітонам, як баночки - Яві ..."
Яйця насправді багатші, ніж банки; вони містять цікаві метадані, такі як деталі ліцензування, залежності від випуску тощо.