¿Qué es un huevo de pitón?
Estoy intentando entender cómo funcionan los paquetes de Python. Es de suponer eggs
que 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?
Nota: El empaque de huevos ha sido reemplazado por el empaque de ruedas.
El mismo concepto que un .jar
archivo en Java, es un .zip
archivo 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
.egg
formato 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.
El .egg
archivo 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 .egg
archivo es completamente multiplataforma.
El .egg
archivo en sí es esencialmente un .zip
archivo. Si cambia la extensión a “ zip
”, podrá ver que tendrá carpetas dentro del archivo.
Además, si tiene un .egg
archivo, puede instalarlo como un paquete usandoeasy_install
Ejemplo: para crear un .egg
archivo para un directorio mymath
que 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 .egg
archivo, mymath-0.1-py3.5.egg
con su número de versión predeterminado de Python (instalación) (el mío aquí: 3.5).
Fuente: blog de la biblioteca de Python
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 wheels
y 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_install
o 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.