PyOxidizer una utilidad para empaquetar proyectos de Python en archivos ejecutables


Post HERE

Hace algunos días unos desarrolladores presentaron la primera versión de la utilidad PyOxidizer, la cual se ofrece como una utilidad que sirve para poder empaquetar un proyecto de Python en forma de un archivo ejecutable independiente, incluido el intérprete de Python y todas las bibliotecas y recursos necesarios.

Dichos archivos pueden ejecutarse en entornos sin el kit de herramientas de Python instalado o independientemente de la disponibilidad de la versión requerida de Python.

PyOxidizer también puede generar ejecutables relacionados estáticamente que no están asociados con las bibliotecas del sistema. El código del proyecto está escrito en el lenguaje Rust y se distribuye bajo la licencia MPL (Mozilla Public License) 2.0.

¿Sobre PyOxidizer?

El proyecto se basa en el módulo del mismo nombre para el lenguaje Rust, 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á del complemento para Rust y está posicionado como una herramienta disponible para un público más amplio para construir y distribuir paquetes de Python independientes.

PyOxidizer una utilidad que tiene como objetivo resolver el problema de cómo distribuir aplicaciones de Python.

Para aquellos que no necesitan distribuir aplicaciones en forma de un archivo ejecutable, PyOxidizer ofrece oportunidades para generar bibliotecas adecuadas para vincularlas con cualquier aplicación para incrustar el intérprete de Python y el conjunto de extensiones necesario en ellas.

La distribución de aplicaciones de Python generalmente se considera un problema no resuelto pues para Russel Keith-Magee identificó la distribución de códigos es una amenaza existencial para la longevidad, para Python. En sus palabras, Python nunca ha tenido una historia consistente sobre cómo le doy mi código a otra persona, especialmente si esa otra persona no es un desarrollador y solo quiere usar mi aplicación.

Para los usuarios finales, la entrega de un proyecto en forma de un único archivo ejecutable simplifica en gran medida la instalación y elimina el trabajo de selección de dependencias, lo que es importante, por ejemplo, para proyectos complejos de Python, como los editores de video.

Mientras que por otro lado para los desarrolladores de aplicaciones, PyOxidizer les permite poder ahorrar tiempo en la organización de la entrega de una aplicación sin tener que usar diferentes herramientas para crear paquetes para diferentes sistemas operativos.

¿Como funciona PyOxidizer?

El uso de las compilaciones propuestas también tiene un efecto positivo en el rendimiento: los archivos generados en PyOxidizer se ejecutan más rápido que utilizando el sistema Python al eliminar las importaciones y definir los módulos básicos.

En PyOxidizer, los módulos se importan de la memoria (todos los módulos incorporados 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 con PyOxidizer se reduce a la mitad aproximadamente.

Desde proyectos similares ya existentes, es posible observar: PyInstaller (desempaqueta el archivo en un directorio temporal e importa módulos de él).

  • Py2exe (vinculado a la plataforma Windows y requiere la distribución de varios archivos), py2app (vinculado a macOS)
  • Cx-freeze (requiere empaquetado separado de dependencias ), Shiv y PEX (forman un paquete en formato zip y requieren Python en el sistema)
  • Nuitka (compila el código, no el intérprete incrustado), pynsist (vinculado a Windows), PyRun (desarrollo propietario sin explicación de los principios de funcionamiento).

En la etapa actual de desarrollo, PyOxidizer ya ha implementado la funcionalidad principal para generar archivos ejecutables para Windows, macOS y Linux.

De las capacidades de largo alcance señalado la ausencia de un entorno de compilación estándar, la incapacidad para generar un paquete en formato MSI, la DMG y deb / rpm, con problemas de empaquetamiento de proyectos que involucran extensiones complejas para el lenguaje C.

Mientras que la ausencia de instrucciones para apoyar la entrega ( “pyoxidizer add”, “pyoxidizer analyze” y “pyoxidizer upgrade”) y el soporte limitado para Terminfo y Readline, falta de soporte para versiones que no sean Python 3.7, falta de soporte para compresión de recursos, incapacidad de compilación cruzada.

Fuente: https://pyoxidizer.readthedocs.io

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.