2008-09-06 7 views

Respuesta

29

Desde el Python Enterprise Application Kit community:

"Los huevos son de pitones como tarros son a Java ..."

huevos Python son una forma de agrupar información adicional con un proyecto de Python , que permite comprobar las dependencias del proyecto y en tiempo de ejecución, así como permitiendo que los proyectos proporcionen complementos para otros proyectos. Hay varios formatos binarios que contienen huecos, pero el más común es el formato '.egg' zipfile , porque es conveniente para la distribución de proyectos. Todos los formatos de admiten datos incluidos específicos del paquete, metadatos de todo el proyecto , extensiones C y el código Python .

Los principales beneficios de los huevos Python son:

  • Permiten herramientas como el "Easy Install" Python gestor de paquetes

  • archivos .egg son un formato de "instalación cero" para una pitón paquete; No Construir o instalar paso es requerido, simplemente ponerlos en PYTHONPATH o sys.path y utilizarlos (puede requerir el tiempo de ejecución instalado si las extensiones C se utilizan o archivos de datos)

  • Pueden incluir el paquete de metadatos, como los otros huevos de los que dependen

  • ellos permiten a los "paquetes de espacio de nombres" (paquetes que solo contienen otros paquetes) que se dividieron en distribuciones separadas (por ejemplo zope. y retorcidas., pico. * los paquetes se puede distribuir como huevos separados, a diferencia de los paquetes normales que siempre deben colocarse en el mismo directorio principal . Esto permite lo que ahora son enormes paquetes monolíticos a distribuir en componentes separados.)

  • Ellos permiten que las aplicaciones o bibliotecas para especificar la versión necesaria de una biblioteca, para que pueda por ejemplo, require ("Twisted-Internet> = 2.0") antes de hacer una importación twisted.internet.

  • Son un gran formato para la distribución de extensiones o plugins para aplicaciones extensibles y marcos (como Trac, que utiliza los huevos para plugins como de 0.9b1), porque el tiempo de ejecución de huevo proporciona API simples para ubicar los huevos y encontrar su entrada anunciada puntos (similar al "punto de extensión" de Eclipse).

  • También hay otros beneficios que pueden venir de tener un formato estandarizado, similar a los beneficios del formato "jar" de de Java.

-Adam

+0

¿Pero qué pasa si los paquetes dependientes de Python no tienen huevos binarios cargados en PyPi? – Mitar

2

archivos .egg son, básicamente, una buena manera de implementar la aplicación de pitón. Puedes pensar que es algo así como archivos .jar para Java.

Más información here.

3

Los huevos son una forma bastante buena de distribuir aplicaciones de Python. Piense en ello como un archivo .deb independiente de la plataforma que instalará todas las dependencias y otras cosas. La ventaja es que es fácil de usar para el usuario final. La desventaja es que puede ser engorroso empaquetar su aplicación como un archivo .egg.

También debe ofrecer un medio alternativo de instalación además de .eggs. Hay algunas personas a las que no les gusta usar huevos porque no les gusta la idea de que un programa de software instale el software que desee. Por lo general, estos tienden a ser tipos de sysadmin.

1

Hagas lo que hagas, no dejes de distribuir tu aplicación, también, como tarball, ya que es el formato más fácil de empaquetar para los sistemas operativos con un sistema de paquete.

1

Para programas simples de Python, probablemente no necesite usar huevos. La distribución de los archivos .py en bruto debería ser suficiente; es como distribuir archivos fuente para GNU/Linux. También puede usar los diversos "empaquetadores" del SO (como py2exe o py2app) para crear .exe, .dmg u otros archivos para diferentes sistemas operativos.

Programas más complejos, p. Django, más o menos requieren huevos debido a los diversos módulos y dependencias requeridas.

4

Un huevo en sí mismo no es mejor que un lanzamiento de fuente apropiado. La parte buena es el manejo de la dependencia. Al igual que los paquetes debian o rpm, puede decir que depende de otros huevos y se instalarán automáticamente (a través del pypi.python.org).

Un segundo comentario: el formato de huevo en sí es un formato de paquete binario. Los paquetes normales de python que consisten en solo el código python se distribuyen mejor como "releases de origen", por lo que "python setup.py sdist" que da como resultado un .tar.gz. Estos también se llaman comúnmente "huevos" cuando se cargan en pypi.

Donde necesita huevos binarios: cuando está agrupando un poco de extensión de código C. Necesitará varios huevos binarios (uno de 32 bits, uno de Windows, etc.).

+0

Pero, ¿qué pasa si los paquetes dependientes de Python no tienen huevos binarios cargados en PyPi? – Mitar

+0

Ellos simplemente mantienen el problema del tener-tener-un-compilador. No hay una solución mágica: tienes paquetes/huevos precompilados o no. –

+0

Sí, tengo mi paquete/huevo precompilado, pero ¿qué ocurre con las dependencias? ¿Hay alguna manera de decir que si el huevo no está disponible en PyPi, usa esto y este repositorio? – Mitar

Cuestiones relacionadas