Paquete de aplicaciones de escritorio: pyinstaller | Equipo técnico de logística de Jingdong

1. Antecedentes

Al usar python para desarrollar algunas herramientas pequeñas, si las computadoras de otras personas no tienen un entorno de python o no han instalado la biblioteca de terceros correspondiente, no hay forma de ejecutarlo y no es realista pedirle a la otra parte que lo instale. , especialmente si la otra parte no es un técnico, entonces, ¿cómo usarlo? ¿Qué pasa con un programa de python independiente que lo convierte en una aplicación de escritorio que se puede ejecutar haciendo doble clic independientemente del entorno? Empaquetar con pyinstaller es una buena opción.

2 ¿Qué es pyinstaller?

pyinstaller es una biblioteca de terceros que admite el uso multiplataforma. Puede analizar, recopilar y generar automáticamente una carpeta o archivo ejecutable para los módulos y bibliotecas necesarios para la ejecución de scripts.

El siguiente ejemplo utiliza el entorno de Windows. Debido a la naturaleza multiplataforma de pyinstaller, es el mismo que el comando de entorno similar a Unix, pero el archivo ejecutable final es diferente.

3 Cómo instalar

Instalar el módulo pyinstaller es lo mismo que instalar otros módulos de python, solo use el comando pip para instalarlo.
salida de instalación de pip install pyinstaller
:

Entre ellos, altgraph, future, etc. representan el entorno dependiente del módulo PyInstaller.

4 Cómo usar

4.1 Introducción a los comandos comunes

pyinstaller + opciones + archivo fuente de entrada de python

Las opciones principales incluyen:

  • -F está empaquetado en un archivo exe (si hay varios archivos py, hay una solución a continuación)
  • -D crea automáticamente un directorio que contiene archivos de aplicaciones de escritorio, incluidas todas las dependencias de tiempo de ejecución (opción predeterminada)
  • -w Especifica que la ventana de la línea de comandos no se muestra cuando el programa se está ejecutando (solo es válido para Windows)
  • -i + ruta ico puede reemplazar el ícono de la aplicación (si está en la carpeta actual, no es necesario agregar la ruta ico)
  • -d Genera una versión de depuración del archivo exe
  • -o especifica el directorio de generación de archivos .spec, si no se especifica, se generará en el directorio raíz actual
  • -n especifica el nombre del archivo .spec, si se omite, el nombre del archivo principal se usará como el nombre del archivo .spec
  • -p Establezca la ruta de importación, puede usar el separador de ruta (Windows es un punto y coma, tipo Unix es dos puntos)

4.2 Ejemplos de métodos comunes

4.2.1 Empaquetado en un solo archivo

El siguiente comando hará que el script de Python se empaquete en un archivo exe.
pyinstaller -F -w -i "./dian_128.ico" start_dian.py

en:

  • Los comandos -F se empaquetan en un solo archivo
  • -w sin ventana de línea de comando
  • -i especifica el icono del icono del archivo exe

Después de una ejecución exitosa, se generarán dos carpetas en el directorio raíz. El archivo "build" contiene todos los archivos dependientes, y la carpeta "dist" almacena el archivo exe generado.

4.2.2 Empaquetado en carpetas

El siguiente comando hará que el script de python se empaquete en una carpeta.
pyinstaller -D -w -i "./dian_128.ico" start_dian.py

en:

  • El comando -D se empaqueta en una carpeta
  • -w sin ventana de línea de comando
  • -i especifica el icono del icono del archivo exe

Después de que la línea de comando se ejecute con éxito, se generará un subdirectorio start_dian en el directorio dist, que contiene una gran cantidad de archivos .dll y .pyz, que son todos archivos de soporte para el archivo exe.

4.3 Use el archivo .spec para configurar la compilación

Las explicaciones anteriores son todas versiones generales, que no son muy flexibles. Si desea agregar nuevos recursos o no desea ingresar un comando largo cada vez que compila, puede usar el archivo .spec para realizar una configuración y compilación personalizadas.

4.3.1 Generar archivo .spec

Después de compilar usando el método anterior, si no se especifica el directorio de generación .spec, se generará un archivo .spec con el mismo nombre que el archivo py compilado en el directorio raíz actual, o use el comando pyi-makespec -F start_dian
. py, se generará directamente .spec file;

4.3.2 Contenido del archivo de especificaciones

abrir archivo de especificaciones

Aquí solo se explican algunas variables clave involucradas:

1. Análisis:

  • ['start_dian.py']: Es el archivo principal y todos los archivos dependientes, si los archivos dependientes están todos en el mismo directorio, no es necesario escribir;
  • juramento: la ruta absoluta del proyecto;
  • datos: agregue archivos de recursos, como carpetas, imágenes, Excel, etc., con tuplas como parámetros, el primer parámetro es la ruta original y el segundo parámetro es la ruta de destino compilada;

2.EXE:

  • consola: Ya sea para abrir la línea de comando, el valor predeterminado es Verdadero (abierto);
  • icon: Compile el icono del producto del archivo ejecutable exe, y debe usar una ruta absoluta;
  • nombre: El nombre en EXE y COLLECT es el nombre del archivo compilado, que es el mismo nombre que el archivo principal compilado por defecto;

4.3.3 compilación de archivos de especificaciones

Archivo de especificaciones configurado, ejecute el comando para compilar, no se necesitan otros parámetros:
pyinstaller start_dian.spec

4.3.4 En las siguientes cuatro situaciones, es mejor modificar el archivo de especificaciones:

  1. Cuando necesite agrupar archivos de recursos con archivos exe;
  2. Cuando sus archivos dependientes incluyen archivos .dll o .so;
  3. Cuando ejecuta exe, necesita parámetros de ejecución;
  4. Cuando necesite fusionar varios paquetes en un módulo común;

5 Preguntas Frecuentes

1. Cómo empaquetar varios archivos

  • Agregue el nombre del módulo importado en el parámetro de análisis hiddenimports en el archivo .spec Después de la modificación, se puede empaquetar nuevamente, lo que resolverá el problema de que no se puede encontrar el paquete dependiente del archivo exe;
  • Use -p archivo principal + -p archivo de importación... en el comando para generar directamente el archivo exe.

El archivo 2.exe es demasiado grande

  • Instalar el entorno virtual de python;
  • Al importar un paquete, use formulario + nombre de paquete + importación + función, no importe directamente + nombre de paquete.

3. Hay un error inexplicable

  • La ruta completa donde se encuentra el archivo python, trate de no tener chino.

4. Después de empaquetarlo en una carpeta, no puede ser utilizado por otros

  • La carpeta bajo dist debe enviarse como un todo, manteniendo la ruta del archivo exe y la carpeta bajo dist sin cambios.

5. Después de ejecutar el archivo exe, no se logra el efecto esperado

  • El archivo informa un error, vuelva a empaquetar el archivo, use la consola (elimine el parámetro -w) y el proceso de ejecución del programa y los errores de impresión se mostrarán en la consola.

6. El script de python es principalmente una salida de línea de comandos, pero después de que se ejecuta el programa, se cierra y no puede ver la información de salida.

  • Agregue comandos a la última línea de la secuencia de comandos de python: os.system ("pausa") o raw_input ("salir cualquier tecla para salir").

Autor: JD Logística Luo Tonglei 

Fuente: Comunidad de desarrolladores de JD Cloud Ziyuanqishuo Tech

Huawei lanzó oficialmente HarmonyOS 4 miniblink compilado con éxito, versión 108. Bram Moolenaar, el padre de Vim, el kernel de Chromium más pequeño del mundo, falleció debido a una enfermedad ChromeOS dividió el navegador y el sistema operativo en una estación independiente Bilibili (Bilibili) y colapsó nuevamente . HarmonyOS NEXT: uso completo Se lanza oficialmente el kernel de desarrollo propio Nim v2.0 y se lanza el lenguaje de programación imperativo Visual Studio Code 1.81. La capacidad de producción mensual de Raspberry Pi ha alcanzado 1 millón de unidades. Babitang lanzó el primer teclado mecánico retro
{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/u/4090830/blog/10093734
Recomendado
Clasificación