Cómo Python genera archivos ejecutables
Python es un lenguaje de scripting que es interpretado y ejecutado por un intérprete. Se publica de la siguiente manera:
archivo .py: para proyectos de código abierto o proyectos donde el código fuente no es tan importante, el código fuente se proporciona directamente y los usuarios deben instalar Python ellos mismos e instalar los distintos bibliotecas de las que dependen. (El paquete de instalación oficial de Python hace esto)
Archivo .pyc: algunas empresas o individuos no quieren que el operador vea el código fuente debido a la confidencialidad o por varias razones. Pueden usar archivos pyc para publicar. pyc El archivo es un código binario que el intérprete de Python puede reconocer, por lo que al publicar en varias plataformas, los usuarios deben instalar la versión correspondiente de Python y las bibliotecas dependientes.
Archivos ejecutables: para los no programadores o los usuarios nuevos en Python, instalar una aplicación Python con una gran cantidad de bibliotecas dependientes puede ser un desastre. La forma más sencilla es proporcionar un archivo ejecutable que le indique cómo utilizarlo. La cuestión es que necesitas empaquetar diferentes ejecutables para diferentes plataformas (Windows, Linux, Mac...). Windows, Linux, Mac...).
Este artículo analiza principalmente la última forma. .py y .pyc son relativamente simples y pueden ser manejados por el propio Python. Hay muchas formas de empaquetar scripts de Python en archivos ejecutables. Este artículo presenta principalmente PyInstaller. Otros métodos son solo para comparación y referencia.
Congelar su código
A continuación se muestra una comparación de varias herramientas de empaquetado (extraído del artículo Congelar su código):
Solución
Windows
p>Linux
OS X
Python 3<
Licencia
Modo de un archivo
Importación de archivos zip
Huevos
Soporte de pkg_resources
bbFreeze sí sí sí sí sí no MIT no sí sí sí
py2exe sí no sí sí sí sí MIT sí sí no no
pyInstaller Sí Sí Sí Sí No GPL Sí Sí No
cx_Freeze Sí Sí Sí Sí Sí Sí PSF No Sí No
py2app No Sí Sí Sí Sí MIT No Sí Sí Sí
PS.pyInstaller y cx_Freeze son buenos. Alguien en stackoverflow sugirió que cx_Freeze sea más conveniente. Las versiones más nuevas de pkg_resources y pyInstaller parecen ser mejores.
Instalación de PyInstaller
Para aquellos que tienen una conexión de red estable y pueden usar con éxito la dirección de origen de pip, el siguiente comando será suficiente: pip install pyinstaller
Por lo general, descargaremos el paquete de código fuente, luego ingresaremos al directorio del paquete y ejecutaremos el siguiente comando (setupools): python setup.py install
Una vez completada la instalación, verifique si la instalación se realizó correctamente: pyinstaller --version
Después de una instalación exitosa, puede usar el siguiente comando:
pyinstaller? El comando principal para empaquetar archivos ejecutables, como se describe a continuación.
pyi-archive_viewer? Ver la lista de archivos en el paquete.
ppyi-bindepend?: Ver la biblioteca de enlaces dinámicos (archivo .so o .dll) de la que depende el archivo ejecutable
ppyi-......?: etc.
Usando PyInstaller
Sintaxis de pyinstaller: pyinstaller [opciones] script [script...] | specfile
La forma más fácil de usar PyInstaller es usarlo con myscript Ejecute este comando en el mismo directorio. py:pyinstaller myscript.py
Verá que se han agregado dos nuevos directorios: build y dist. Los archivos en el directorio dist son archivos ejecutables que puede distribuir. Para el comando anterior, encontrará un montón de archivos en el directorio dist, incluidos varios archivos de biblioteca de enlaces dinámicos y archivos ejecutables de myscrip. A veces resulta muy problemático. Debe empaquetar todos los archivos en dist antes de publicarlos. Si se pierde la biblioteca de enlaces dinámicos, no se ejecutará. Afortunadamente, pyInstaller admite el modo de archivo único. Solo necesita ejecutar: pyinstaller -F mycript .py.
Descubrirá que solo hay un archivo ejecutable en dist.
Descubrirá que solo hay un archivo ejecutable en dist, y este archivo ejecutable está listo para ser distribuido y puede ejecutarse en un sistema operativo similar al que está utilizando.
Por supuesto, pyInstaller tiene una variedad de opciones, incluidas algunas opciones comunes, como la opción -d para depuración, que le permite comprender el proceso de ejecución de pyInstaller; también hay opciones para diferentes plataformas; puedes acceder a PyInstaller. Consulta la WIKI oficial para conocer su uso.
Al ejecutar el comando pyInstaller, se generará un archivo .spec en el mismo directorio que el script. Este archivo le indicará a pyInstaller cómo procesar todos sus scripts y también contiene opciones de comando. Normalmente, no necesitamos preocuparnos con este archivo, pero si necesita empaquetar un archivo de datos o agregar algunas opciones de tiempo de ejecución de Python en el binario empaquetado... Para algunas opciones de empaquetado avanzadas, debe editar manualmente el archivo .spec archivo . Esto se puede hacer usando: script de opciones ppyi-makespec [script...]
Cree un archivo .spec, para archivos .spec editados manualmente podemos usar cualquiera de los siguientes métodos: script de opciones pyi-makespec [script...]
Crea un archivo .spec. Para archivos .spec editados manualmente, podemos usar cualquiera de los siguientes comandos: pyinstaller specfile pyi-build specfile
Introducción a PyInstaller
Descripción de PyInstaller
PyInstaller es en realidad Empaquetar el analizador de Python y sus propios scripts en un ejecutable es completamente diferente a compilarlos en código de máquina real. La ventaja de esto es que no tiene que instalar Python ni las bibliotecas de las que depende en la máquina en la que ejecuta su programa. . Bibliotecas de las que depende su script. En Linux, utiliza principalmente los comandos ldd y objdump del paquete de herramientas binutil.
PyInstaller ingresará el script que usted especifique, primero analizará los otros scripts de los que depende, luego buscará, copiará y recopilará todos los scripts relacionados, incluido el analizador de Python, y luego los colocará en un directorio o los empaquetará en Un archivo ejecutable.
Puedes publicar el resultado como una carpeta completa dentro de una carpeta o como un archivo ejecutable generado.
Todo lo que necesita hacer es decirle al usuario que su aplicación es autónoma y no requiere la instalación de paquetes adicionales o versiones específicas de Python, y luego estará lista para ejecutarse.
Cabe señalar que PyInstaller solo empaqueta archivos ejecutables en el mismo entorno que el sistema de la máquina empaquetadora. En otras palabras, no es portátil y si necesita ejecutarlo en un sistema diferente, debe empaquetarlo para esa plataforma.
Materiales de referencia