2009-04-01 10 views
16

hay una manera de crear un .exe independiente de un script de python. Los ejecutables generados con py2exe solo se pueden ejecutar con pythonXX.dll. Me gustaría obtener un .exe totalmente independiente que no requiera la instalación de la biblioteca de tiempo de ejecución de python. Parece un problema de enlace, pero usa una biblioteca estática en lugar de la dinámica y también sería útil aplicar una tira para eliminar los símbolos no utilizados.Cree un exe de Windows independiente que no requiera pythonXX.dll

¿Alguna idea?

Gracias.

Alessandro

Respuesta

17

Puede hacerlo en la última versión de py2exe ...
Simplemente agregue algo como el siguiente código en su archivo setup.py (la parte clave es 'bundle_files': 1).

Para incluir su paquete TkInter en la instalación, use la tecla 'includes'.

distutils.core.setup(
     windows=[ 
      {'script': 'yourmodule.py', 
      'icon_resources': [(1, 'moduleicon.ico')] 
      } 
     ], 
     zipfile=None, 
     options={'py2exe':{ 
         'includes': ['tkinter'], 
         'bundle_files': 1 
         } 
     } 
) 
+0

La solución está funcionando bien, pero ¿qué pasa con la inclusión de tkinter en el exe? El ejecutable se bloquea si lo saco del directorio dist pero funciona bien dentro de dist donde está presente "tcl" dir. – alexroat

+0

ooops, perdón, con la opción 'bundle_files': 1 no está funcionando tanto para ejecutar exe desde el directorio dist o desde afuera. ¿Hay alguna manera de incluir bibliotecas tcl en el exe también? Gracias. – alexroat

+0

He actualizado la variable de opciones para mostrarle cómo incluir otros paquetes. –

1

Ésta no es la mejor manera de hacerlo, pero es posible considerar el uso ejecutable Archivo SFX tanto con el .exe y .dll archivos dentro, y se establece para ejecutar el archivo .exe cuando es doble clickeado

5

Debido a la forma enlazador dinámico de Windows funciona no se puede usar la biblioteca estática si se utiliza .dll módulos de Python o .pyd; Las DLL cargadas en Windows no comparten automáticamente su espacio de símbolos con el ejecutable y requieren una DLL separada que contenga los símbolos de Python.

4

Si su propósito de tener un único ejecutable es para facilitar la descarga/envío por correo electrónico, etc., he resuelto esta liando la salida py2exe usando Inno Setup. Esto es mejor que tener un ejecutable único, porque en lugar de proporcionar un archivo ejecutable que se puede colocar en algún directorio, una aplicación de Windows que funcione bien proporcionará un desinstalador, aparecerá en el applet Agregar/Quitar Programas, etc. Inno maneja todo este para ti.

Cuestiones relacionadas