2009-07-17 18 views
6

Confesaré que soy muy nuevo en Python y no sé muy bien todavía lo que estoy haciendo. Recientemente, creé una aplicación de Windows muy pequeña usando Python 2.6.2 y wxPython 2.8. Y funciona genial; Estoy bastante satisfecho con lo bien que funciona normalmente. Por normalmente me refiero cuando invoco directamente a través del intérprete de Python, así:py2exe: la aplicación compilada de Python para Windows no se ejecutará debido a DLL

> python myapp.py 

Sin embargo, yo quería ir un paso más allá y en realidad compilar esto en un archivo ejecutable independiente. Así que seguí these instructions desde la wiki wxPython que utiliza py2exe. Al principio me dio errores en la línea de comandos, diciendo que faltaba MSVCR90.dll. Luego copié MSVCR90.dll a mi carpeta Python \ DLLs. Eso pareció al principio como lo solucionó, ya que hizo con éxito lo que tenía que hacer. Terminó con una advertencia rápida de que había algunos archivos DLL en los que el programa depende y puedo o no necesitar distribuirlos.

Así que navegué en la carpeta dist que py2exe había creado e intenté ejecutar mi ejecutable. Pero tratar de abrir sólo aparecido un diálogo de error que dice:

This application failed to start because MSVCR90.dll was not found. 
Re-installing the application may fix this problem. 

Así que siguió adelante y copiar Msvcr90.dll nuevo en esta carpeta dist. Pero eso no funcionó. Luego lo copié en el directorio WINDOWS \ system32. Eso tampoco lo hizo. ¿Qué debo hacer para que esto funcione?

+1

Este es un duplicado de otra pregunta con una discusión más completa:
Un día StackOverflow podría confiar en mí lo suficiente como para marcar esto como un duplicado. – resplin

Respuesta

8

No se puede copiar msvcr * .dll; deben configurarse utilizando las reglas para montajes uno al lado del otro. Puede hacer esto instalando el paquete redistribuible como señala Sam, o puede ponerlos junto a sus ejecutables siempre y cuando obedezca las reglas.

Consulte la sección "Distribución de Visual C++ DLL de la biblioteca como asambleas privadas" aquí: How to Deploy using XCopy para los detalles, pero básicamente su aplicación se ve así:

c:\My App\MyApp.exe 
c:\My App\Microsoft.VC90.CRT\Microsoft.VC90.CRT.manifest 
c:\My App\Microsoft.VC90.CRT\msvcr90.dll 

Una ventaja de esto es que los usuarios no administradores pueden utilizar su aplicación (creo que debe ser un administrador para instalar el tiempo de ejecución a través del instalador redistribuible). Y no hay necesidad de ningún instalador: puede copiar los archivos en una PC y todo funciona.

+0

¿Es esa una característica de Vista? Encontré un problema similar (MSVCP71.DLL informó que faltaba al iniciar una aplicación py2exe) y simplemente lo puse en el mismo directorio que el .exe lo arregló (al menos en XP) –

+1

@Luper: creo que las nuevas reglas vinieron con msvcr80 . – RichieHindle

Cuestiones relacionadas