crear ejecutable python linux
¿Cómo hacer que un ejecutable independiente del script de Python se ejecute sin CUALQUIER dependencia? (16)
Estoy creando una aplicación Python y no quiero obligar a mis clientes a instalar Python y módulos. También quiero hacer mi aplicación de código cerrado.
Entonces, ¿hay una manera de compilar scripts de Python a ejecutables independientes?
Es posible que desee investigar Nuitka . Toma el código fuente de Python y lo convierte en llamadas a la API de C ++. Luego se compila en un binario ejecutable (ELF en Linux). Ha existido desde hace 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.
Me gustaría compilar alguna información útil sobre la creación de archivos independientes en Windows usando Python 2.7.
He usado py2exe y funciona, pero tuve algunos problemas.
Se han mostrado algunos problemas para crear archivos únicos en bits de Windows 64: 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 al importar paquetes en el archivo de configuración;
No pude hacerlo funcionar junto con PyQt ..
Esta última razón me hizo probar PyInstaller PyInstaller .
En mi opinión, es mucho mejor porque:
- Es más fácil de usar.
Sugiero crear un archivo .bat con las siguientes líneas, por ejemplo (pyinstaller.exe debe estar en la ruta de Windows):
pyinstaller.exe --onefile MyCode.py
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ó usando 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.
Me han dicho que PyRun, https://www.egenix.com/products/python/PyRun/ , también es una opción.
No es exactamente un paquete del código python, pero ahora también hay un grumpy de google, que transpila el código a Go. No es compatible con Python C api, por lo que puede que no funcione para todos los proyectos.
Para los scripts de Python 3.2, la única opción es Cxfreeze. Constrúyelo a partir de fuentes, de lo contrario no funcionará.
Para python 2.x, sugiero pyinstaller ya que puede empaquetar un programa python en un solo ejecutable, a diferencia de CxFreeze que también genera bibliotecas.
Puede encontrar la lista de utilidades de distribución en la lista @ https://wiki.python.org/moin/DistributionUtilities .
Utilizo bbfreeze y ha funcionado muy bien (aunque todavía tengo soporte para Python 3).
Puede usar PyInstaller para empaquetar programas de Python como ejecutables independientes. Funciona en Windows, Linux y Mac.
Inicio rápido de PyInstaller
Instale PyInstaller desde PyPI:
pip install pyinstaller
Vaya al directorio de su programa y ejecute:
pyinstaller yourprogram.py
Esto generará el paquete en un subdirectorio llamado
dist
.Para un tutorial más detallado, consulte el manual .
Sí, es posible compilar scripts de Python en un ejecutable independiente.
PyInstaller se puede usar para convertir programas de Python en ejecutables independientes, bajo 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 Cython extendido.
También recomiendo PyInstaller para una mejor compatibilidad con versiones anteriores, como python 2.3 - 2.7.
para py2exe , tienes que tener python 2.6
Usando pyinstaller, encontré un mejor método usando el acceso directo al archivo .exe en lugar de hacer --onefile
. De todos modos, probablemente 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 lugar de eso, si movemos la ruta de trabajo hacia arriba.
Cree un acceso directo al exe, muévalo en la parte superior y establezca las rutas de inicio y destino como se especificó, 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 hago doble clic en el acceso directo, ¡es como si ejecutara el archivo con Python! Encontré este enfoque mejor que el - --onefile
como:
- En el caso de onefile, hay un problema con una .dll que falta para el sistema operativo win7 que necesita una instalación previa, etc. Con la compilación habitual con múltiples archivos, no existen tales problemas.
- Todos los archivos que usa mi script de Python (¡está implementando un servidor web de tornado y necesita un sitio web de archivos de todo tipo!) No es necesario moverlos a ningún lado: simplemente creo el acceso directo en la parte superior.
- Realmente puedo usar esta misma carpeta en ubuntu (ejecutar python3 myfile.py) y en windows (hacer doble clic en el acceso directo).
- No necesito molestarme con el pirateo excesivamente complicado del archivo .spec para incluir archivos de datos, etc.
Oh, recuerde eliminar de la carpeta de compilación después de construir, ahorrará en tamaño.
Use py2exe .... use debajo de los archivos de configuración:
from distutils.core import setup
import py2exe
from distutils.filelist import findall
import matplotlib
setup(
console=[''PlotMemInfo.py''],
options={
''py2exe'': {
''packages'' : [''matplotlib''],
''dll_excludes'': [''libgdk-win32-2.0-0.dll'',
''libgobject-2.0-0.dll'',
''libgdk_pixbuf-2.0-0.dll'']
}
},
data_files = matplotlib.get_py2exe_datafiles()
)
Utilice Cython para convertir a c, compilar y vincular con gcc. Otro podría ser, haga las funciones principales en c (las que quiere hacer difíciles de revertir), compílelas y use Python boost para importar el código compilado (además, obtendrá una ejecución de código mucho más rápida). A continuación, utilice cualquier herramienta mencionada para distribuir.
Y una tercera opción es cx_Freeze
, que es multiplataforma.
py2exe creará el archivo exe que desea, pero necesita 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.
te puede gustar py2exe . También encontrarás infos para hacerlo en Linux.