2009-09-11 13 views
6

Tenemos una aplicación (Windows), con la cual distribuimos una instalación completa de Python (incluidos varios módulos de terceros que usamos), por lo que tenemos consistencia y no tenemos que instalar todo por separado. Esto funciona bastante bien, pero la aplicación es bastante grande.Recortar Python Runtime

Obviamente, no usamos todo lo disponible en el tiempo de ejecución. Me gustaría reducir el tiempo de ejecución para incluir solo lo que realmente necesitamos.

Planeo probar py2exe, pero me gustaría intentar encontrar otra solución que me ayude a eliminar las partes innecesarias del tiempo de ejecución de Python.

+1

Excelente pregunta, me gustaría saber cómo disminuir el tamaño de mis ejecutables de python también. Sin embargo, recuerde que si está usando wxPython, algunas distribuciones de Windows, incluido XP, no tendrán los archivos DLL necesarios (MSVCR71.DLL y MSVCP71.DLL) necesarios para arrancar. –

+0

Otra pregunta: ¿Se considera que py2exe está "listo para producción" en términos de estabilidad? – Dave

Respuesta

5

Tanto py2exe y pyinstaller (NOTA: para este último uso de la versión SVN, la largada es muy largo en el diente ;-) hacen su "recorte" a través de modulefinder, el módulo de la biblioteca estándar para la búsqueda de todos los módulos utilizados por una secuencia de comandos dada de Python; Por supuesto, puede usar el último usted mismo para identificar todos los módulos necesarios, si no confía en pyinstaller o py2exe para hacerlo de manera adecuada y automática en su nombre.

6

Un truco que aprendí mientras recortaba archivos .py para enviar: elimine todos los archivos .pyc en la biblioteca estándar, luego ejecute la aplicación completamente (es decir, suficiente para asegurarse de que todos los módulos Python que necesita ser cargado). Si examina los directorios de la biblioteca estándar, habrá archivos .pyc para todos los módulos que se usaron realmente. Los archivos .py sin .pyc son los que no necesitas.

1

Este py2exe page on compression sugiere usar UPX para comprimir cualquier DLL o archivos .pyd (que en realidad son solo DLL, aún). Obviamente, esto no ayuda a recortar los módulos innecesarios, pero puede/reducirá el tamaño de su distribución, si eso es una gran preocupación.