¿Qué es un huevo de pitón?

Resuelto Bialecki asked hace 15 años • 4 respuestas

Estoy intentando entender cómo funcionan los paquetes de Python. Es de suponer eggsque son algún tipo de mecanismo de empaquetado, pero ¿cuál sería una descripción general rápida del papel que desempeñan y puede haber alguna información sobre por qué son útiles y cómo crearlos?

Bialecki avatar Jan 13 '10 01:01 Bialecki
Aceptado

Nota: El empaque de huevos ha sido reemplazado por el empaque de ruedas.

El mismo concepto que un .jararchivo en Java, es un .ziparchivo con algunos archivos de metadatos renombrados .egg, para distribuir código como paquetes.

Específicamente: la estructura interna de los huevos de pitón

Un "huevo de Python" es una estructura lógica que incorpora el lanzamiento de una versión específica de un proyecto de Python, que comprende su código, recursos y metadatos. Existen múltiples formatos que se pueden usar para codificar físicamente un huevo de Python y se pueden desarrollar otros. Sin embargo, un principio clave de los huevos de Python es que deben ser detectables e importables. Es decir, una aplicación Python debería poder descubrir fácil y eficientemente qué huevos están presentes en un sistema y garantizar que el contenido de los huevos deseados sea importable.

El .eggformato se adapta bien a la distribución y a la fácil desinstalación o actualización del código, ya que el proyecto es esencialmente autónomo dentro de un único directorio o archivo, sin mezclarse con el código o los recursos de ningún otro proyecto. También permite tener instaladas varias versiones de un proyecto simultáneamente, de modo que los programas individuales puedan seleccionar las versiones que desean utilizar.

 avatar Jan 12 '2010 18:01

El .eggarchivo es un formato de distribución para paquetes de Python. Es solo una alternativa a una distribución de código fuente o Windows exe. Pero tenga en cuenta que, en el caso de pure Python, el .eggarchivo es completamente multiplataforma.

El .eggarchivo en sí es esencialmente un .ziparchivo. Si cambia la extensión a “ zip”, podrá ver que tendrá carpetas dentro del archivo.

Además, si tiene un .eggarchivo, puede instalarlo como un paquete usandoeasy_install

Ejemplo: para crear un .eggarchivo para un directorio mymathque a su vez puede tener varios scripts de Python, realice el siguiente paso:

# setup.py
from setuptools import setup, find_packages
setup(
    name = "mymath",
    version = "0.1",
    packages = find_packages()
    )

Luego, desde la terminal haz:

 $ python setup.py bdist_egg

Esto generará muchos resultados, pero cuando esté completo verás que tienes tres carpetas nuevas: build , dist y mymath.egg-info . La única carpeta que nos importa es la carpeta dist donde encontrará su .eggarchivo, mymath-0.1-py3.5.eggcon su número de versión predeterminado de Python (instalación) (el mío aquí: 3.5).

Fuente: blog de la biblioteca de Python

kmario23 avatar Jun 13 '2016 22:06 kmario23

Descargo de responsabilidad: egg es un formato abandonado del paquete Python, las herramientas para usar huevos ya no existen.

Un huevo es un paquete de Python. Es un archivo zip que contiene archivos fuente de Python y/o bibliotecas compiladas.

El formato no está bien especificado sobre lo que debe contener o cómo hacer paquetes para diferentes versiones de python y diferentes sistemas operativos, esa es una de las razones por las que fue reemplazado.

El formato apareció alrededor de 2004 y estuvo en uso hasta mediados de la década de 2010, ha sido completamente reemplazado por wheelsy pip install.

Los huevos fueron instalados por el comando easy_install. El comando se eliminó en setuptools v58.3 (año 2021). Ya no puedes usar huevos.

Si ve algo que mencione easy_installo egg, ya sean respuestas o tutoriales de desbordamiento de pila, está muy obsoleto.

Recomiende esta respuesta más larga https://stackoverflow.com/a/68897551/5994461 para obtener una historia detallada del empaquetado de Python. Se trata de pepitas, ruedas, huevos y mucho más.

Actualización: a partir de julio de 2023, el repositorio oficial de paquetes de Python, pypi.org, ya no acepta la carga de paquetes .egg.

user5994461 avatar Nov 18 '2021 12:11 user5994461