py2exe: Compilado Python de aplicaciones de Windows no se ejecutará debido a la DLL

StackOverflow https://stackoverflow.com/questions/1145662

  •  16-09-2019
  •  | 
  •  

Pregunta

confesaré que soy muy nuevo en Python y yo realmente no sé lo que estoy haciendo todavía. Recientemente he creado una pequeña aplicación de Windows usando Python 2.6.2 y 2.8 wxPython. Y funciona muy bien; Estoy muy satisfecho de lo bien que funciona normalmente. Por normalmente me refiero cuando invoco directamente a través del intérprete de Python, así:

> 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í estas instrucciones desde el wiki de wxPython que utilizan py2exe. Al principio me dio errores en la línea de comandos, diciendo Msvcr90.dll faltaba. Entonces copié Msvcr90.dll a mi carpeta de Python \ DLL. Que parecía en un principio como lo arreglen, ya que lo hizo con éxito lo que tenía que hacer. Se hizo terminar con una advertencia rápida que hubo algunos archivos DLL del programa depende de y puede o no puede necesitar para distribuirlos.

Así que navegaba en la carpeta dist que py2exe había creado y trató de correr 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 seguí adelante y copiado Msvcr90.dll nuevo en esta carpeta dist. Pero eso no hace el truco. A continuación he copiado en el directorio WINDOWS \ system32. Eso no lo hizo tampoco. ¿Qué necesito hacer para conseguir esta cosa funcione?

¿Fue útil?

Solución

No se puede simplemente copiar msvcr * .dll - necesitan ser establecido usando las reglas para los conjuntos de lado a lado. Esto se puede hacer mediante la instalación del paquete redistribuible como señala Sam, o puede ponerlos junto a sus ejecutables, siempre y cuando usted obedece las reglas.

Vea la sección "Distribución de Visual C ++ DLL de la biblioteca como asambleas privadas" aquí: Cómo implementar usando 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 la aplicación (creo que tiene que 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 simplemente copiar los archivos a un PC y funciona todo

Otros consejos

Creo que la instalación Microsoft C ++ el paquete redistribuible instalará el archivo DLL que necesita correctamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top