PyInstaller: el ejecutable de un solo archivo no se ejecuta

Estoy tratando de crear un ejecutable de un solo archivo para Windows desde una aplicación de Python, usando pyinstaller .

Descargué la twig experimental de Python 3 de pyinstaller desde aquí (desplácese hacia abajo y encontrará el enlace de descarga, el archivo es py3.zip ). Y lo instalé usando python setup.py install . ACTUALIZACIÓN: Lo intenté con la versión de Python 2 también, y encontré el mismo problema.

Luego creé un script de prueba en python llamado test.py , con el siguiente contenido:

 print('Hello, World!') 

Luego, ejecuté el siguiente comando para crear un ejecutable de un solo archivo:

 pyinstaller --onefile test.py 

El comando se dist/test.exe había generado el archivo dist/test.exe . Sin embargo, cuando bash ejecutarlo, todo lo que obtengo es una ventana de consola vacía. Nada aparece, y el progtwig nunca termina. Simplemente cuelga allí para siempre, hasta que la cierre.

Me sale una ventana de consola vacía.

Llamar a pyinstaller test.py (sin la opción --onefile ) funciona bien. Entonces, ¿cuál es el problema?

Tenga en cuenta que usar py2exe o cx_freeze no es una opción. Tiene que ser pyinstaller .

ACTUALIZACIÓN: acabo de probarlo en Python 2 (usando la versión normal de PyInstaller), y me encontré con el mismo problema. Entonces, esto no es solo un problema de Python 3.

Me las arreglé para resolver este problema.

Descubrí que el progtwig realmente se ejecutó. Sin embargo, se colgó durante mucho tiempo (¡ como 5 minutos! ) Antes de mostrar Hello, World! mensaje.

En realidad, el problema fue causado por UPX (Ultimate Packer for eXectutables), una herramienta que tiene como objective reducir el tamaño de los archivos ejecutables. PyInstaller usa UPX de forma predeterminada si lo encuentra en el sistema. Por razones que todavía no puedo entender, el ejecutable lleno de UPX tardó mucho tiempo en autoextraerse y ejecutarse.

Entonces, simplemente ejecutando el comando con la opción --noupx solucionó el problema.

 pyinstaller --debug --onefile --noupx test.py 

Para obtener más información, echa un vistazo a la cuestión GitHub .