python - programa - pyinstaller tutorial
¿Cómo compilo un script PyQt(.py) a un solo archivo ejecutable independiente para Windows(.exe) y/o Linux? (6)
Como estoy tratando de usar Qt porque está compilado
Estás derrotando este beneficio al usar Python. Aunque las otras respuestas dan una introducción a las opciones para distribuir código Python sin requerir que los usuarios instalen Python ellos mismos, Python pretende ser un lenguaje interpretado, por lo que habrá inconvenientes para cada una de estas opciones (por ejemplo, velocidad, tamaño del programa, compatibilidad, etc ...). Ellos pueden o no ser tramposos para usted.
Sus otras dos opciones son:
- Acepta la naturaleza interpretada de Python: haz que las personas con las que compartes tu programa instalen Python y las dependencias. Sin embargo, puedes simplificar este proceso significativamente. Ex. en Linux, use un administrador de paquetes.
- Escribe tu programa en C ++. Si lo hace, le permitirá compilar realmente un solo ejecutable nativo. Desafortunadamente, esto significa descartar a Python, pero hay razones por las que la gente aún escribe código en lenguajes menos bellos como C ++ y parece que podría encontrarse con algunos de ellos.
Empecé a tocar el violín con PyQt, e hice un guión "hermoso" desde la aplicación de ejemplo del papel blanco pyqt ( pastebin )
Funciona perfectamente en Windows y Linux (con el entorno qt ya instalado en ambos).
Ahora mi pregunta es: dado que estoy tratando de usar Qt porque está compilado (al menos puro Qt basado en C ++), ¿cómo puedo compilar algún archivo .exe para ejecutarlo en Windows, o un ejecutable independiente para Linux.
El punto es que quiero que el programa se compile, debido a la velocidad y la portabilidad, en lugar de interpretarlo desde el origen, lo que requeriría una configuración previa en cualquier máquina. Uno de los objetivos, por ejemplo, es enviar pequeñas secuencias de comandos gui por correo electrónico a los compañeros de trabajo que no son programadores en absoluto.
Después de pasar muchas semanas en esto y probar todas las alternativas: PyInstaller, py2exe, cx_freeze, ... - Creé mi propia biblioteca: https://build-system.fman.io/ . Se basa en PyInstaller pero resuelve muchos de sus puntos comunes de dolor. También le permite crear instaladores nativos en Windows, Mac y Linux.
Es posible que desee comprobar cx_freeze . Afirma crear archivos ejecutables que son "multiplataforma y deben funcionar en cualquier plataforma en la que Python trabaje".
Lo moneyGuru al explorar el paquete moneyGuru que usa PyQt. Descargué el archivo moneyguru.exe en mi sistema Windows XP, lo ejecuté y funcionó bien en Python 3.2.
Puede clonar el repositorio de hg desde here para ver cómo se hizo.
Estoy usando el instalador
pip install pyinstaller
No lo sé, pero el instalador no agrega sip.pyd. Entonces, necesitas PyQt5 / sip.pyd . Recomiendo buen estilo de Windows qwindowvistastyle.dll .
Haga el archivo build.cmd como:
pyinstaller --onefile --clean ^
--add-binary="C:/Users/Quazer/.virtualenv/pyqt5-36/Lib/site-packages/PyQt5/sip.pyd;PyQt5" ^
--add-binary="C:/Users/Quazer/.virtualenv/pyqt5-36/Lib/site-packages/PyQt5/Qt/plugins/styles/qwindowsvistastyle.dll;PyQt5/Qt/plugins/styles" ^
./main.py
^
- nueva línea en archivo de comando (.cmd, .bat)
Hay un módulo llamado Py2EXE, que hará exactamente lo que quieras hacer. Convertirá la secuencia de comandos en un archivo .exe para ejecutarse en Windows. No estoy seguro acerca de Linux, pero apuesto a que hay un módulo en algún lado. py2exe.com
si quieres crear completamente un ejecutable independiente, puedes probar esto: http://www.pyinstaller.org/ . Creo que es mejor crear un ejecutable independiente que cx_freeze o py2exe (en mi experiencia). y fácil de usar (documentación completa disponible en el sitio).
Actualización: como última información de @SoursopTree y @LectureMaker, ahora es compatible con la versión 3.3 - 3.6 de Python.
Actualización: pase el argumento --onefile si desea crear .exe completamente independiente. por ejemplo :
pyinstaller.exe --onefile --windowed app.py
Actualización: otra biblioteca interesante que el autor de la biblioteca afirma que puede crear aplicaciones de escritorio multiplataforma. vale la pena probar https://build-system.fman.io/