primera edición de la herramienta , que permite empaquetar un proyecto en Python en forma de un archivo ejecutable autónomo, que incluye el intérprete de Python y todas las bibliotecas y recursos necesarios para su funcionamiento. Tales archivos pueden ejecutarse en entornos sin el conjunto de herramientas de Python instalado o independientemente de la versión necesaria de Python. PyOxidizer también puede generar archivos ejecutables vinculados estáticamente, que no dependen de las bibliotecas del sistema. El código del proyecto está escrito en Rust y bajo la licencia MPL (Mozilla Public License) 2.0.
El proyecto se basa en el módulo homónimo para Rust, que permite integrar el intérprete de Python en programas en Rust para ejecutar scripts de Python dentro de ellos. PyOxidizer ahora ha superado su papel como complemento para Rust y se posiciona como una herramienta accesible para una audiencia más amplia para crear y distribuir paquetes autónomos de Python. Para aquellos que no necesitan distribuir aplicaciones como archivos ejecutables, PyOxidizer ofrece capacidades para generar bibliotecas, adecuadas para vincular con cualquier aplicación para integrar el intérprete de Python y el conjunto necesario de extensiones.
Para los usuarios finales, la entrega del proyecto como un único archivo ejecutable simplifica enormemente la instalación y elimina la necesidad de gestionar dependencias, lo cual es especialmente relevante para proyectos complejos en Python, como los editores de video. Para los desarrolladores de aplicaciones, PyOxidizer permite ahorrar tiempo en la organización de la entrega de la aplicación, sin necesidad de usar diferentes herramientas para crear paquetes para distintos sistemas operativos.
El uso de las compilaciones propuestas también tiene un impacto positivo en el rendimiento: los archivos generados en PyOxidizer se inician más rápido que al utilizar Python del sistema, gracias a la eliminación de la importación y definición de módulos base. En PyOxidizer, los módulos se importan desde la memoria: todos los módulos integrados se cargan en memoria de inmediato y luego se utilizan sin acceder al disco. En las pruebas, el tiempo de inicio de la aplicación al usar PyOxidizer se reduce aproximadamente a la mitad.
De los proyectos similares existentes, se pueden mencionar: (extrae el archivo en una carpeta temporal e importa los módulos desde allí), (vinculado a la plataforma Windows y requiere la distribución de múltiples archivos), (vinculado a macOS), (requiere empaquetado separado de dependencias), y (forman un paquete en formato zip y requieren Python en el sistema), (compila el código en lugar de incrustar el intérprete), (vinculado a Windows), (desarrollo propietario sin explicación de los principios de funcionamiento).
En la etapa actual de desarrollo, PyOxidizer ya ha implementado la funcionalidad principal para la generación de archivos ejecutables para Windows, macOS y Linux. De las características aún no disponibles, la falta de un entorno de construcción típico, la imposibilidad de generar paquetes en formatos MSI, DMG y deb/rpm, problemas con el empaquetado de proyectos que incluyen extensiones complejas en C, la falta de comandos para el mantenimiento de la entrega («pyoxidizer add», «pyoxidizer analyze» y «pyoxidizer upgrade»), soporte limitado para Terminfo y Readline, falta de soporte para versiones distintas de Python 3.7, falta de soporte para la compresión de recursos, imposibilidad de la compilación cruzada.
Fuente: opennet.ru
