2011-01-08 5 views
8

He creado algún programa usando python en Windows Vista. Pero quiero implementarlo en Windows XP. ¿Es necesario hacer una compilación nueva en Windows XP? ¿O hay posibilidad de hacer una compilación que funcione en ambos sistemas?¿Es posible construir exe en Vista e implementar en XP usando py2exe

EDITAR (EDIT 2 - muy simple programa no funciona también): Mi configuración:

from distutils.core import setup 
import py2exe 

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

con el Explorador de dependencia he comprobado que las dependencias son:

msvcr90.dll 
kernel32.dll 
    +ntdll.dll 

casi resuelto :

Me di cuenta de que installi ng: http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en hace la cosa. Pero traté de proporcionar msvrc90.dll manualmente antes y no funcionó, ¿hay alguna forma de redistribuirlo automáticamente? O debo proporcionarle este archivo de instalación.

pasado y el problema principal

ahora tengo un problema con msvcrt.dll. Mensaje que se produjo en Windows XP:

El punto de entrada del procedimiento wcsscpy_s no pudieron ser localizados en la dinámica biblioteca de vínculos msvcrt.dll

en Vista Tengo la versión 7.0.6001.18000

Pero en XP 7.0.2600.5512

¿Hay alguna manera de arreglar esto?

Parece que no me excluyo ... error tonto algunas de DLL:

$ grep -lir msvcrt.dll . 
./buildout 
./buildtest.py 
./dist/ACTIVEDS.dll 
./dist/adsldpc.dll 
./dist/ATL.DLL 
./dist/credui.dll 
./dist/DSOUND.dll 
./dist/MAPI32.dll 
./dist/PROPSYS.dll 
./dist/WLDAP32.dll 

ahora funciona!

Respuesta

3

Crear un archivo llamado "Microsoft.VC90.CRT.manifest" con el siguiente contenido al lado del ejecutable creado por py2exe y el msvcr90.dll, msvcp90.dll y archivos msvcm90.dll:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <noInheritable/> 
    <assemblyIdentity 
     type="win32" 
     name="Microsoft.VC90.CRT" 
     version="9.0.21022.8" 
     processorArchitecture="x86" 
     publicKeyToken="1fc8b3b9a1e18e3b" 
    /> 
    <file name="msvcr90.dll" /> 
    <file name="msvcp90.dll" /> 
    <file name="msvcm90.dll" /> 
</assembly> 
+0

Después de crear este archivo y agregar estos dll sigo recibiendo "El punto de entrada del procedimiento wcsscpy_s no se pudo ubicar en la biblioteca de vínculos dinámicos msvcrt.dll" – dfens

+0

Su programa no debe depender de dos bibliotecas de tiempo de ejecución de C. Intente descubrir de dónde proviene la dependencia de msvcrt.dll, p. Ej. usando DependencyWalker (http://www.dependencywalker.com/) en sus archivos * .pyd y * .dll. – cgohlke

+0

ok lo veo, es _ctypes.pyd – dfens

2

si tienes python de 32 bits en tu sistema de vista y usas py2exe para crear un exe, también debería ejecutarse en XP.

¿ha tenido algún problema? ¿Si es así, Que son?

+0

Solo hay un mensaje: El sistema no puede ejecutar el programa especificado. – dfens

+0

puede actualizar su pregunta con más información? como el script de disutils que está utilizando para compilar el exe. Lo más probable es que te falten algunos dll en el sistema de destino de XP que también deberías incluir. –

Cuestiones relacionadas