La solución para proteger y eliminar el cuadro de comando negro cmd después de que python encapsule el archivo ejecutable exe

Lo odio por copiar el código en Internet, comprobarlo es una pérdida de tiempo y esfuerzo. Por favor, respete la experiencia de combate real y los resultados resumidos en la programación. Yo pago por ello. Si lo aprecia, lo apreciará. Si realmente necesita resolver el problema, comuníquese con [email protected]. Gracias

Resumen

Última actualización: 2020.08.20
tipo de papel: clase de experiencia práctica (sin conocimiento para explicar)
después de que se completa la programación de Python, para facilitar la multiplataforma, empujando el programa en un archivo ejecutable exe. Sin embargo, cuando se ejecuta después del empaque, aparecerá el cuadro negro cmd, lo que afecta el uso hasta cierto punto. Hay dos tipos de cuadros negros cmd emergentes: 1. Los cuadros negros cmd generados al ejecutar el archivo .py. 2. La caja negra de cmd generada por la función o comando llamado durante la programación. Generalmente, el primer tipo de caja negra es mejor para proteger, y el segundo tipo de caja negra todavía existe incluso después de usar el comando -w de pyinstaller.
Ahora resuma las soluciones para cerrar la caja negra de cmd en diferentes situaciones después de la encapsulación de Python. Este artículo está empaquetado usando la biblioteca pyinstaller. Sugerencia: El siguiente es el contenido de este artículo, los siguientes casos son para referencia


Uno, instale la biblioteca pyinstaller

En comparación con otras bibliotecas de paquetes, la biblioteca pyinstaller tiene ventajas obvias. El archivo exe generado se puede ejecutar sin depender de ningún archivo dll, lo cual es conveniente para el trasplante. Los pasos de instalación son los siguientes:

(1) Haga clic en el menú de inicio de win10, ingrese directamente cmd y ejecute en modo administrador haciendo clic derecho.
(2) Si la opción para agregar ruta está marcada al instalar Python, puede ingresar directamente el comando
pip install pyinstaller
(si no agregado, se recomienda desinstalar python, reinstalar y verificar la ruta de agregar. Elija esta sugerencia con cuidado, porque necesita reinstalar la biblioteca descargada anteriormente)
(3) Espere a que se complete la conexión de red, si se solicita el tiempo de espera, puede pruebe el siguiente comando para cambiar la fuente de descarga y reinstalar: pip install pyinstaller -i https://pypi.douban.com/simple

En segundo lugar, cambiando el nombre del sufijo py o el comando de empaquetado

Al cambiar el nombre del sufijo py a pyw, se puede cerrar el cmd que aparece después de encapsular el exe. Este método puede proteger la caja negra cmd generada por la ejecución del archivo py, que generalmente es más común en Internet.

1. Muestra el sufijo del archivo py

(1) El sufijo del archivo python es .py, puede usar la carpeta opción-ver-extensión de archivo para mostrar el sufijo del archivo, y luego cambiar su propio sufijo de archivo py a pyw.
(2) La instrucción de la biblioteca de paquetes antes de que se cambie el nombre del sufijo: pyinstaller -F test.py
(3) La instrucción de la biblioteca de paquetes después de que se cambie el nombre del sufijo: pyinstaller -F test.pyw
(4) Donde "test" es el suyo nombre de archivo
(5) de nuevo Encapsule el exe, después de esperar a que se complete, puede encontrar que el cuadro negro cmd desaparece. Si el cuadro negro de cmd todavía existe, verifique si la función o comando que genera el cuadro de cmd se llama en el programa. Consulte el Capítulo 3 para obtener más detalles.

Inserte la descripción de la imagen aquí

2. Cambie el sufijo py a pyw

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

3. El comando de empaquetado se puede modificar directamente

(2) Instrucciones de embalaje antes del cambio: pyinstaller -F test.py
(3) Instrucción de embalaje después del cambio: pyinstaller -F test.py -w (donde F es mayúscula yw es minúscula)

Tres, la forma de cambiar el programa

Generalmente, la función os.system () se usa en el programa para llamar a otros exe externos, como cmd, ping, archivos exe, etc., o el exe externo se crea con una caja negra cmd, independientemente de si -w es agregado al comando al empaquetar, cambie la extensión del archivo a .pyw, y el cuadro negro cmd seguirá apareciendo. Ahora resuma los otros dos métodos de llamada, en lugar de la función os.system ().

1. Utilice la función de llamada en la biblioteca de subprocesos.

 import subprocess
 subprocess.call("调用的exe名字", creationflags=0x08000000)

Entre ellos, creationflags = 0x08000000 es el comando de protección. Este método generalmente se puede usar para llamar directamente a un archivo exe externo, y cuando sea un poco incómodo llamar a los comandos cmd o ping que se ejecutan en la caja negra, puede probar el segundo método.

2. Utilice la función Popen en la biblioteca de subprocesos.

Para dar un ejemplo simple, si necesita hacer ping a 200 direcciones IP en 10 segundos, le llevará mucho tiempo hacer ping una por una. Por lo tanto, puede utilizar el método de creación de subprocesos para hacer ping a 200 direcciones IP al mismo tiempo. Entonces el problema es que se crean 200 subprocesos, luego deben aparecer 200 cuadros de comando negros en la pantalla de la computadora al mismo tiempo. Para aquellos con un rendimiento de computadora potente o que no se preocupan por la apariencia de más cajas de comando negras, por favor pase con cuidado. Mi computadora (i5-3210M, memoria 16G), el movimiento del mouse se teletransporta cuando se ejecuta al mismo tiempo. Entonces, ¿qué se debe hacer? Para facilitar la expresión de ocultar el cuadro de comando negro, solo la parte del código de la función de ejecución del hilo se publica de la siguiente manera:

def run(self):
        命令 = subprocess.Popen("ping "+ self.V_IP4 ,shell = True)
        命令.wait()
        self.读取PING结果()
        if self.返回信息[3] != "超时":
            self.读取PLC数据()
            IP查询结果列表.append(self.返回信息)

Utilice la función subprocess.Popen () para ocultar una gran cantidad de cuadros de comando negros y salvar la computadora del agua y el fuego. Si necesita esperar la ejecución de la función Popen () después de que se complete la llamada, debe usar .wait () , como lo muestra el comando .wait () en el código .

para resumir

Lo anterior es el resultado de mi propia prueba personal. Si hay desacuerdos, puedo comunicarme entre sí o discutir y aprender unos de otros. La corrección de errores es bienvenida, contacto: [email protected]

Supongo que te gusta

Origin blog.csdn.net/baidu_37611158/article/details/108073586
Recomendado
Clasificación