Что такое Python Eggs?

Ответ

Python Eggs — это устаревший формат дистрибуции пакетов в Python, предшественник современных Python Wheels. Eggs использовались для распространения Python-пакетов вместе с метаданными и зависимостями, могли содержать как исходный код, так и скомпилированные расширения.

Основные особенности и причины устаревания:

  • Содержание: Включали код, метаданные (например, зависимости) и иногда скомпилированные C-расширения.
  • Управление: Устанавливались с помощью easy_install (также устаревшего инструмента) из пакета setuptools.
  • Проблемы: Имели сложности с управлением бинарными зависимостями, версионированием и кросс-платформенной совместимостью, что приводило к проблемам при установке.
  • Замена: Были вытеснены форматом Wheel (.whl), который обеспечивает более быструю и надежную установку, особенно для пакетов с нативными расширениями, и лучше интегрирован с pip.

Пример создания Egg (устаревший способ, не рекомендуется):

# setup.py
from setuptools import setup

setup(
    name="my_package",
    version="0.1.0",
    packages=["my_package"],
)

Затем в терминале:

python setup.py bdist_egg

Современная альтернатива: Для дистрибуции пакетов в Python сегодня повсеместно используются Python Wheels (.whl) и pip для их установки.

Ответ 18+ 🔞

А, блядь, Python Eggs! Ну это ж как древние артефакты, ёпта, прям из каменного века питонячьего. Представь себе — раньше, сука, не было этих ваших удобных whl-файлов, а были вот эти яйца, .egg. И это была, блядь, целая эпоха страданий и боли!

Что это за хуйня была и почему все рады, что она сдохла:

  • Что внутри: Туда пихали и код, и метаданные (типа "эй, для работы мне нужен вот этот другой пакет"), а иногда и скомпилированные С-расширения, чтоб они там болтались, как горох в банке.
  • Как ставили: Через easy_install. Это такой предок pip, только, блядь, в разы более тупой и криворукий. Установишь одно — полпроекта разъёбывалось, потому что зависимости он ставил, как бог на душу положит.
  • Проблемы: О, это отдельная песня! С бинарниками — пиздец полный, с версиями — каша, с разными системами — вообще лотерея. Установишь яйцо на одной машине — работает. На другой — вылетает с ошибкой, потому что там библиотека системная на пол-версии отличается. Короче, волнение ебать, терпения ноль ебать.
  • Что пришло на смену: Слава богу, придумали Wheels (колёса, .whl). Вот это, блядь, технология! Ставятся быстро, чётко, предсказуемо. И pip с ними дружит, как родной. Eggs на их фоне — это как телега рядом с Tesla.

Как это говно раньше делали (смотри и смейся, но не повторяй!):

# setup.py — файл, от которого сейчас у всех старых питонистов дёргается глаз
from setuptools import setup

setup(
    name="my_package",
    version="0.1.0",
    packages=["my_package"],
)

А потом в консоли творили магию:

python setup.py bdist_egg

И вуаля — тебе выплюнуло этот самый .egg-файл, который ты потом с молитвой пытался куда-нибудь впихнуть.

Короче, вывод простой, как три копейки: Забудь про Eggs, как про страшный сон. Это история, музейный экспонат. Всё нынче крутится вокруг Python Wheels и pip. Живёшь в XXI веке — пользуйся нормальными инструментами, а не этими яйцами, которые только проблемы нести могут.