Lanzamiento de PyOxidizer para empaquetar proyectos de Python en ejecutables autónomos

Presentado por primera versión de la utilidad PyOxidante, que le permite empaquetar un proyecto en Python en forma de un archivo ejecutable autónomo, incluido el intérprete de Python y todas las bibliotecas y recursos necesarios para el trabajo. Dichos archivos se pueden ejecutar en entornos sin herramientas de Python instaladas o independientemente de la versión requerida de Python. PyOxidizer también puede generar archivos ejecutables vinculados estáticamente que no están vinculados a las bibliotecas del sistema. El código del proyecto está escrito en Rust y distribuido por con licencia MPL (Licencia pública de Mozilla) 2.0.

El proyecto se basa en el módulo de lenguaje Rust del mismo nombre, que le permite incrustar un intérprete de Python en los programas de Rust para ejecutar scripts de Python en ellos. PyOxidizer ahora ha ido más allá de ser un complemento de Rust y se está posicionando como una herramienta para crear y distribuir paquetes Python autónomos a una audiencia más amplia. Para aquellos que no necesitan distribuir aplicaciones como un archivo ejecutable, PyOxidizer brinda la capacidad de generar bibliotecas adecuadas para vincularse con cualquier aplicación para incorporar un intérprete de Python y el conjunto de extensiones necesario.

Para los usuarios finales, entregar el proyecto como un único archivo ejecutable simplifica enormemente la instalación y elimina el trabajo de seleccionar dependencias, lo cual es importante, por ejemplo, para proyectos complejos de Python, como los editores de video. Para los desarrolladores de aplicaciones, PyOxidizer les permite ahorrar tiempo organizando la entrega de aplicaciones, sin la necesidad de utilizar diferentes herramientas para crear paquetes para diferentes sistemas operativos.

El uso de los ensamblados propuestos también tiene un efecto positivo en el rendimiento: los archivos generados en PyOxidizer se ejecutan más rápido que cuando se usa el sistema Python debido a la eliminación de la importación y definición de los módulos base. En PyOxidizer, los módulos se importan desde la memoria (todos los módulos integrados se cargan inmediatamente en la memoria y luego se usan sin acceder al disco). En las pruebas, el tiempo de inicio de la aplicación cuando se usa PyOxidizer se reduce aproximadamente a la mitad.

Entre los proyectos similares ya existentes se pueden destacar los siguientes: PyInstaller (descomprime el archivo en un directorio temporal e importa módulos desde él), py2exe (vinculado a la plataforma Windows y requiere la distribución de varios archivos), py2aplicación (vinculado a macOS), cx-congelar (requiere un paquete de dependencia separado), Shiv и PEX (forma un paquete en formato zip y requiere Python en el sistema), Nuitka (compila el código en lugar de incorporar un intérprete), analista (vinculado a Windows) PyRun (desarrollo propietario sin explicación de principios operativos).

En la etapa actual de desarrollo, PyOxidizer ya ha implementado la funcionalidad principal para generar archivos ejecutables para Windows, macOS y Linux. De oportunidades actualmente no disponibles отмечается falta de un entorno de compilación estándar, incapacidad para generar paquetes en formatos MSI, DMG y deb/rpm, problemas con proyectos de empaquetado que incluyen extensiones complejas en el lenguaje C, falta de comandos para respaldar la entrega ("añadir pyoxidizer", "analizar pyoxidizer" y “actualización de pyoxidizer”), soporte limitado para Terminfo y Readline, falta de soporte para versiones distintas a Python 3.7, falta de soporte para la compresión de recursos, incapacidad de compilación cruzada.

Fuente: opennet.ru

Añadir un comentario