He leído algunos sobre archivos .egg y los he visto en mi directorio lib, pero ¿cuáles son las ventajas/desventajas de usarlos como desarrollador?¿Cuáles son las ventajas de empaquetar su biblioteca/aplicación de Python como un archivo .egg?
Respuesta
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
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.
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.
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.
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.
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.).
Pero, ¿qué pasa si los paquetes dependientes de Python no tienen huevos binarios cargados en PyPi? – Mitar
Ellos simplemente mantienen el problema del tener-tener-un-compilador. No hay una solución mágica: tienes paquetes/huevos precompilados o no. –
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
- 1. ¿Cuáles son las ventajas de poner su Javascript en un archivo .php?
- 2. ¿Cuáles son las ventajas de usar Qt?
- 3. Cuáles son las ventajas de C# sobre Python
- 4. Cuáles son las ventajas de VistaDB
- 5. ¿Cuáles son las ventajas de usar Automapper?
- 6. ¿Cuáles son las ventajas de utilizar Rubinius
- 7. ¿Cuáles son las ventajas de Lazy Evaluation?
- 8. ¿Cuáles son las ventajas de concurrent.futures sobre multiproceso en Python?
- 9. ¿Cuáles son las ventajas de Perforce?
- 10. ¿Cuáles son las ventajas de un procesador de 64 bits?
- 11. ¿Cuáles son las ventajas de usar un errback?
- 12. ¿Cuáles son las ventajas prácticas del currying?
- 13. ¿Cuáles son las ventajas de las macros de esquema?
- 14. ¿Cuáles son las ventajas de un MembershipProvider personalizado en ASP.NET?
- 15. ¿Cuáles son las ventajas reales de las colecciones inmutables?
- 16. Cómo actualizar un archivo en python egg
- 17. Cuáles son las ventajas de MVC3 sobre MVC2
- 18. ¿Cuáles son las ventajas de QAbstractItemModel en comparación con QStandardItemModel?
- 19. ¿Cuáles son las ventajas y desventajas del Patrón de propiedades?
- 20. ¿Cuáles son las ventajas de utilizar POCO en DataTables?
- 21. ¿Cuáles son las ventajas y desventajas del autohospedaje?
- 22. ¿Cuáles son las 'grandes' ventajas de tener Poco con ORM?
- 23. ¿Cuáles son las ventajas de usar SVN sobre CVS?
- 24. ¿Cuáles son las ventajas de cargar DLL de forma dinámica?
- 25. ¿Cuáles son las ventajas de LePUS3 sobre UML?
- 26. ¿Qué es NSZone? ¿Cuáles son las ventajas de usar initWithZone :?
- 27. ¿Cuáles son las ventajas y desventajas de usar esquemas XML?
- 28. ¿Cuáles son las ventajas/desventajas de usar Maven?
- 29. ¿Cuáles son las ventajas del uso de Node.js vs PHP
- 30. ¿Cuáles son las ventajas de definir una clave externa
¿Pero qué pasa si los paquetes dependientes de Python no tienen huevos binarios cargados en PyPi? – Mitar