Estoy creando una aplicación Python y no quiero obligar a mis clientes a instalar Python y módulos.
Entonces, ¿hay alguna manera de compilar un script de Python para que sea un ejecutable independiente?
python
executable
Jeff
fuente
fuente
Respuestas:
Puede utilizar py2exe como ya se ha respondido y el uso Cython para convertir sus claves
.py
archivos en.pyc
, archivos de C compilado, al igual que.dll
en Windows y.so
en Linux, mucho más difícil de revertir lo común.pyo
y.pyc
archivos (y también la ganancia en el rendimiento!)fuente
Puede usar PyInstaller para empaquetar programas de Python como ejecutables independientes. Funciona en Windows, Linux y Mac.
fuente
Es posible que desee investigar Nuitka . Toma el código fuente de Python y lo convierte en llamadas de API C ++. Luego se compila en un binario ejecutable (ELF en Linux). Ha existido durante algunos años y es compatible con una amplia gama de versiones de Python.
Probablemente también obtendrá una mejora en el rendimiento si lo usa. Recomendado.
fuente
Me gustaría recopilar información útil sobre la creación de archivos independientes en Windows con Python 2.7.
He usado py2exe y funciona, pero tuve algunos problemas.
Ha mostrado algunos problemas para crear archivos individuales en Windows 64 bits: el uso de bundle_files = 1 con py2exe no funciona ;
Es necesario crear un archivo setup.py para que funcione. http://www.py2exe.org/index.cgi/Tutorial#Step2 ;
He tenido problemas con las dependencias que tiene que resolver importando paquetes en el archivo de instalación;
No pude hacerlo funcionar junto con PyQt ..
Esta última razón me hizo probar PyInstaller http://www.pyinstaller.org/ .
En mi opinión, es mucho mejor porque:
Sugiero crear un archivo .bat con las siguientes líneas, por ejemplo (pyinstaller.exe debe estar en la ruta de Windows):
Puede crear un solo archivo, entre otras opciones ( https://pyinstaller.readthedocs.io/en/stable/usage.html#options ).
Solo tuve un problema al usar PyInstaller y el paquete de multiprocesamiento que se resolvió mediante esta receta: https://github.com/pyinstaller/pyinstaller/wiki/Recipe-Multiprocessing .
Entonces, creo que, al menos para Python 2.7, una opción mejor y más simple es PyInstaller.
fuente
--onefile
indicador no lo ayudará a hacerlo portátil en Windows, porque el ejecutable aún desea vincularse con laapi-ms-win-crt-runtime-l1-1-0.dll
biblioteca (u otras) que deben instalarse a través delvcredist
paquete. Por lo tanto, todavía existe una dependencia y debe instalarse antes de la ejecución.Sí, es posible compilar scripts de Python en un ejecutable independiente.
PyInstaller se puede utilizar para convertir programas de Python en ejecutables independientes, en Windows , Linux , Mac OS X , FreeBSD , Solaris y AIX . Es uno de los convertidores recomendados.
py2exe convierte los scripts de Python en solo ejecutables en la plataforma Windows.
Cython es un compilador estático tanto para el lenguaje de programación Python como para el lenguaje de programación extendido Cython.
fuente
Y una tercera opción es
cx_Freeze
, que es multiplataforma.fuente
cx_Freeze
lanzamientos listados en pypi desde finales de 2017. ¿Se abandonó este proyecto?te puede gustar py2exe . también encontrarás información para hacerlo en Linux
fuente
Use py2exe ... use los archivos de configuración a continuación:
fuente
Me gusta pyinstaller , especialmente la variante "en ventana":
Creará un solo archivo * .exe en una carpeta dist /.
fuente
También recomiendo pyinstaller para una mejor compatibilidad con versiones anteriores, como python 2.3 - 2.7.
para py2exe , debes tener python 2.6
fuente
Para los scripts Python 3.2, la única opción es Cxfreeze. Construirlo a partir de fuentes de lo contrario no funcionará.
Para python 2.x, sugiero pyinstaller, ya que puede empaquetar un programa de python en un único ejecutable, a diferencia de CxFreeze, que también genera bibliotecas.
fuente
py2exe creará el archivo exe que desea, pero debe tener la misma versión de MSVCR90.dll en la máquina en la que va a usar su nuevo exe. Consulte http://www.py2exe.org/index.cgi/Tutorial para obtener más información.
fuente
Puede encontrar la lista de utilidades de distribución enumeradas en @ https://wiki.python.org/moin/DistributionUtilities .
Utilizo bbfreeze y ha funcionado muy bien (aunque todavía tengo soporte para python 3).
fuente
.so
archivos, o copiará los archivos .egg directamente y todos estarán presentes en un solo directorio (o como un solo archivo). No se requiere instalación.Esto crea un archivo EXE independiente en Windows NOTA IMPORTANTE: El archivo exe se generará en una carpeta llamada 'dist'
puedes instalar pyinstaller usando
pip install PyInstaller
fuente
No es exactamente un paquete del código de Python, pero ahora también está malhumorado de Google, que transpila el código para ir. No es compatible con la API de Python C, por lo que puede no funcionar para todos los proyectos.
fuente
Usando pyinstaller, encontré un mejor método usando el acceso directo al .exe en lugar de hacer
--onefile
. De todos modos, es probable que haya algunos archivos de datos y si está ejecutando una aplicación basada en el sitio, su programa también depende de los archivos html, js, css. No tiene sentido mover todos estos archivos a algún lugar ... en cambio, ¿qué pasa si movemos la ruta de trabajo hacia arriba?Haga un acceso directo al exe, muévalo en la parte superior y establezca el destino y las rutas de inicio como se especifica, para que las rutas relativas vayan a dist \ folder:
Target: %windir%\system32\cmd.exe /c start dist\web_wrapper\web_wrapper.exe Start in: "%windir%\system32\cmd.exe /c start dist\web_wrapper\"
puede cambiar el nombre del acceso directo a cualquier cosa, así que cambie el nombre a "GTFS-Manager"ahora cuando doblo -Haga clic en el acceso directo, ¡es como si hubiera ejecutado el archivo en Python! Encontré este enfoque mejor que el
--onefile
siguiente:Ah, recuerde eliminar la carpeta de compilación después de compilar, ahorrará en tamaño.
fuente
Use Cython para convertir a c, compilar y vincular con gcc. Otro podría ser, hacer las funciones centrales en c (las que desea dificultar la reversión), compilarlas y usar python boost para importar el código compilado (además obtendrá una ejecución de código mucho más rápida). luego use cualquier herramienta mencionada para distribuir.
fuente
Me dicen que PyRun, https://www.egenix.com/products/python/PyRun/ , también es una opción.
fuente