2011-06-16 16 views
6

Creé un ejecutable con py2exe en una máquina con Windows 7 de 64 bits y distribuí el programa.ejecutable hecho con py2exe no se ejecuta en Windows XP 32bit

En una máquina de 32 bits Windows XP el programa no se ejecuta exhibir el siguiente comportamiento:

a popup window says: program.exe is not a valid win32 application.

The command prompt window says "access denied"

he comprobado para los permisos y el usuario tiene control total y la propiedad completa del archivo y sus directorios padre. Entonces ese no puede ser el problema.

La única posibilidad factible que puedo imaginar es una incompatibilidad OS/arquitectura. ¿Cómo debo solucionar esto?

Mi archivo setup.py utilizado para generar el ejecutable:

from distutils.core import setup 
import py2exe 

setup(console=['xerxes2excel.py']) 

que corrían el siguiente para generar el exe:

python setup.py py2exe 
+0

Intente crear el ejecutable utilizando una máquina de 32 bits – inspectorG4dget

+0

¿No sería seguro decir que probablemente creó un ejecutable de 64 bits, que no se ejecutará en un procesador de 32 bits? –

+0

@jcomeau_ictx, esa es mi suposición. ¿Hay alguna manera de crear un ejecutable de 32 bits en una máquina de 64 bits? ¿A través de algún tipo de magia de emulación? –

Respuesta

4

Un problema común cuando genera ejecutable en Windows 7 y se implementa en Windows XP.

De acuerdo con el tutorial py2exe, debe incluir la DLL MVC. Pero el tutorial es antiguo y el script dado busca solo en un directorio. Antes, el directorio contenía todas las DLL y el manifiesto, pero hoy en día solo contiene la DLL. Necesita especificar otro directorio para el archivo de manifiesto. Si no lo hace, tendrá este tipo de error:

this application has failed to start because the application configuration is incorrect 

Si está en Windows 7 64 bits, lo que necesita la DLL de Visual C en tiempo de ejecución Microsoft. No se olvide el manifiesto que no está en el mismo directorio en Windows 7. Es necesario adaptar el script como el siguiente:

data_files = [("VC90", glob(r'C:\Windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_bcb86ed6ac711f91\*.*')), 
      ("VC90", glob(r'C:\Windows\winsxs\Manifests\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_bcb86ed6ac711f91.manifest')) 
] 
setup(
    data_files=data_files, 
    console = [{'script': "C:\test\my_program.py"}], 
    zipfile = None, 
) 

Ahora puede implementar el directorio "dist" que contiene todos los archivos y dependencias.

+0

debe incluir desde glob import glob – tovmeod

Cuestiones relacionadas