2009-12-24 33 views
5

Una secuencia de comandos python simple debe ejecutarse en un servidor de Windows sin Python instalado.Windows Server no puede ejecutar una aplicación generada por py2exe

Utilicé py2exe, que generó un subdirectorio dist saludable, con script.exe que funciona bien en la máquina local.
Sin embargo, cuando lo ejecuto en el servidor (Windows Server 2003 R2), produce esto:
El sistema no puede ejecutar el programa especificado.

y ERRORLEVEL es 9020.

¿Alguna idea?

+0

También puede tratar de esta cuestión en ServerFault.com. – DOK

+0

¿Está intentando ejecutar un binario de 32 bits en un sistema operativo de 64 bits (o viceversa)? –

+0

Ambas máquinas son de 32 bits. –

Respuesta

1

No encontré la causa del problema, pero el uso de python 2.5 con py2exe en el mismo script funcionó bien en el servidor.

Supongo que hay algo mal con py2exe en 2.6.

+1

Py2exe funciona bien en Python2.6, lo he usado muchas veces. Debe tener cuidado con la versión del DLL de Microsoft C Visual Runtime que incluye con su aplicación distribuida. Los detalles se explican en el paso 5 del tutorial py2exe: http://www.py2exe.org/index.cgi/Tutorial#Step5 –

2

Podría faltar algunas DLL necesarias. Intente usar depends.exe para identificar lo que puede faltar. Probablemente sea msvc-something-something.dll

+0

Esa fue mi conjetura inicial, pero desafortunadamente todos los dlls están en su lugar. –

1

Dado que Python 2.6 está construido en Visual Studio 2008, la máquina de destino también debe tener las bibliotecas de Visual Studio 2008, disponibles en el Visual C++ 2008 Redistributable package.

Confirmé que en una compilación limpia de Windows XP o Server 2003 (ninguno de los cuales tiene el Visual Studio 2008 redistribuible), un ejecutable py2exe de Python 2.6 fallará con el error antes mencionado, pero después de instalar el paquete redistribuible, el ejecutable funciona normalmente

+0

Hola. Estoy bastante seguro de que el paquete redistribuible de Visual C++ 2008 * SP1 * al que se ha vinculado es la versión incorrecta. El SP1 tiene la DLL de tiempo de ejecución C de la versión incorrecta y no funcionará. Ver mi respuesta a continuación para la versión correcta. –

+0

Interesante. Pensé que lo había probado con el SP1 redistribuible, pero aparentemente estaba equivocado. Gracias por la corrección. –

6

Para que py2exe funcione, debe incluir la versión correcta de la DLL de ejecución de Microsoft C con su aplicación.

Para Python2.6, esto es Msvcr90.dll versión 9.0.21022.8, que se puede obtener desde el Microsoft Visual C++ 2008 Redistributable Package:

http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en

NOTA de que el SP1 de este instalador contiene una versión diferente de la DLL, y no funcionará.

Pasé un tiempo a principios de este año explicar esto con cuidado en el tutorial py2exe, así que voy a enlazar a que: http://www.py2exe.org/index.cgi/Tutorial#Step5

Cuestiones relacionadas