Що таке яйце Пітона?


531

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

Відповіді:


527

Примітка. Упаковка для яєць замінена упаковкою на колесі.

Це ж поняття, що і .jarфайл у Java, це .zipфайл з деякими файлами метаданих, перейменованими .eggдля розповсюдження коду у вигляді пакетів.

Зокрема: Внутрішня структура яєць Пітона

"Яйце Python" - це логічна структура, що втілює випуск конкретної версії проекту Python, що включає його код, ресурси та метадані. Існує кілька форматів, які можна фізично кодувати яйцем Python, і інші можуть бути розроблені. Однак ключовим принципом яєць Python є те, що вони повинні бути відкритими та значними. Тобто, програма Python повинна мати можливість легко та ефективно з’ясувати, які яйця є в системі, а також забезпечити необхідність вмісту бажаних яєць.

.eggФормат добре підходить для розподілу і легкого видалення або оновлення коду, так як проект, по суті , самодостатнім в межах одного файлу або каталогу, unmingled з кодом або ресурсами будь-яких інших проектів. Це також дозволяє одночасно встановити кілька версій проекту, щоб окремі програми могли вибрати версії, які вони бажають використовувати.


82

.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 (див. Вихідний код програми 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 є специфічною для версії? тобто яйце, побудоване для 2 проти 3? чи навіть незначні версії? ex 2.x
ealeon

1

"Яйце" - це однофайловий формат розповсюдження для файлів, пов'язаних з Python.

"Швидкий посібник з яйцями Python" зазначає, що "Яйця є пітонам, як баночки - Яві ..."

Яйця насправді багатші, ніж банки; вони містять цікаві метадані, такі як деталі ліцензування, залежності від випуску тощо.


Сьогодні посилання мертва.
Перфі

@Perfi Посилання працює для мене.
Клік

Смішно, як це іноді працює! Це знову в Інтернеті. Радий бачити це :)
Перфі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.