Quiero crear un solo ejecutable de mi proyecto Python. Un usuario debería poder descargarlo y ejecutarlo sin necesidad de instalar Python. Si solo estuviera distribuyendo un paquete, podría usar pip, wheel y PyPI para construirlo y distribuirlo, pero esto requiere que el usuario tenga Python y sepa cómo instalar paquetes. ¿Qué puedo usar para crear un ejecutable autónomo a partir de un proyecto de Python?
python
compilation
exe
packaging
software-distribution
ShadowFlame
fuente
fuente
pdb
) no tiene acceso fácil a los archivos que se están ejecutando,py2exe
(no sé sobre los demás) no incluye.py
archivos, por lo que no verá líneas de origen en los seguimientos de pila.Respuestas:
Éstos son algunos de los más comunes. A menos que se indique explícitamente, todos los proyectos enumerados a continuación se mantienen activamente a partir de mi última edición (enero de 2020).
También he incluido enlaces a sus respectivos sitios web, repositorios y listados de PyPi en caso de que desee comprobar por sí mismo la frecuencia con la que se han actualizado.
Además, a menos que se indique lo contrario, todos los programas enumerados a continuación producirán un exe específicamente para el sistema operativo en el que se está ejecutando. Por ejemplo, ejecutar Pyinstaller en Windows producirá un exe de Windows, pero ejecutar Pyinstaller en Linux producirá un exe de Linux. Si desea producir un archivo ejecutable para múltiples sistemas operativos, tendrá que considerar el uso de máquinas virtuales o utilizar algo como Wine .
Los siguientes programas funcionan de manera similar: combinan Python y su programa, combinándolos de manera efectiva para producir un ejecutable.
PyInstaller:
cx_Freeze:
py2app:
Nota: las versiones anteriores de esta publicación incluían reseñas para py2exe ( repo ) y bbfreeze ( repo ). Ambos proyectos han sido eliminados de esta lista: han visto poca o ninguna actividad durante varios años y parecen estar completamente sin mantenimiento. Consulte el historial de edición de los escritos antiguos.
Por supuesto, esa no es la única forma de hacer las cosas:
pynsist:
Otras notas: Pynsist parece admitir la combinación de cualquier versión arbitraria de Python con su aplicación. Sin embargo, la herramienta en sí requiere Python 3.5+ para ejecutarse.
Pynsist creará un instalador de Windows para su programa que instalará directamente Python en la computadora del usuario en lugar de empaquetarlo con su código y creará accesos directos que enlacen con su script de Python. Aunque este programa solo produce instaladores de Windows, parece que aún puede ejecutar Pynsist en computadoras Mac y Linux.
Nuitka:
cython:
Mi preferencia personal es usar PyInstaller, ya que fue el más fácil de poner en marcha, fue diseñado para funcionar bien con varias bibliotecas populares como numpy o pygame, y tiene una gran compatibilidad con varios sistemas operativos y versiones de Python.
Sin embargo, también he construido con éxito varios ex usando cx_Freeze sin demasiada dificultad, por lo que también debería considerar probar ese programa.
Todavía no he tenido la oportunidad de probar pynist, Nuitka o Cython ampliamente, pero parecen soluciones bastante interesantes e innovadoras. Si tiene problemas al utilizar el primer grupo de programas, puede que valga la pena probar uno de estos tres. Dado que funcionan de manera fundamentalmente diferente a los programas de estilo Pyinstaller / cx_freeze, podrían tener éxito en esos extraños casos extremos en los que falla el primer grupo.
En particular, creo que pynist es una buena forma de eludir todo el problema de distribuir su código por completo: Mac y Linux ya tienen soporte nativo para Python, y solo instalar Python en Windows podría ser realmente la solución más limpia. (La desventaja es que ahora debe preocuparse por apuntar a múltiples versiones de las bibliotecas de instalación de Python +).
Nuitka y Cython (en mi limitada experiencia) parecen funcionar bastante bien. Una vez más, no los he probado exhaustivamente, por lo que mi principal observación es que parecen tardar mucho más en producir un exe que los programas de estilo "congelado".
Dicho todo esto, convertir su programa Python en un ejecutable no es necesariamente la única forma de distribuir su código. Para obtener más información sobre otras opciones disponibles, consulte los siguientes enlaces:
fuente
msvcrxx.dll
, dondexx
está un número de versión) para ejecutar el .exe (o pedir a los usuarios que lo instalen por sí mismos). Esto es necesario porque Python está construido en Windows usando Visual Studio.pyinstaller todavía está en desarrollo activo. Puedes ver los últimos cambios en GitHub.
Tiene soporte para las tres plataformas principales:
y es compatible con las versiones 2.6 y 2.7 de Python. No es compatible con Python 3, pero hay una rama experimental de Python 3 .
Actualizar
A partir de la versión 3.2.1 es compatible con Python 2.7, 3.3-3.5
fuente
Mejor uso
pip install auto-py-to-exe
que proporciona una hermosa interfaz de usuario con todas las opciones necesarias para crear un ejecutable.Después de la instalación, simplemente escriba
auto-py-to-exe
su terminal o símbolo del sistema.fuente