Py2exe con Tkinter

Estoy tratando de convertir un progtwig GUI tkinter básico a un .exe usando py2exe. Sin embargo, me he encontrado con un error al usar el siguiente script de conversión.

# C:\Python26\test_hello_con.py py2exe from distutils.core import setup import py2exe setup(windows=[r'C:\Python26\py2exe_test_tk.py']) 

C: \ Python26 \ py2exe_test_tk.py es el siguiente código

 import Tkinter as tk root = tk.Tk() root.title("Test") label1 = tk.Label(root,text="Hello!",font=('arial', 10, 'bold'), bg='lightblue') label1.pack(ipadx=100, ipady=100) root.mainloop() 

Este es el error que recibo cuando bash ejecutar el .exe recién creado

 Traceback (most recent call last): File "py2exe_test_tk.py", line 4, in  File "Tkinter.pyc", line 1643, in __init__ _tkinter.TclError: Can't find a usable init.tcl in the following directories: {C:/Users/My_Name/lib/tcl8.5} {C:/Users/My_Name/lib/tcl8.5} C:/Users/lib/tcl8.5 {C:/Users/My_Name/library} C:/Users/library C:/Users/tcl8.5.8/library C:/tcl8.5.8/library This probably means that Tcl wasn't installed properly. 

Estoy bastante seguro de que hay algo en mi script de conversión que me está dando problemas. ¿Qué omití? ¿O alguien tiene un ejemplo de cómo se vería el script de conversión para un progtwig GUI tkinter? ¿También es posible desviar los archivos de salida .exe a mi escritorio?

EDITAR:

El informe de error decía que faltaba init.tcl de {C: /Users/My_name/lib/tcl8.5} . Así que hice ese directorio y puse una copia de init.tcl allí. Ahora, cuando bash ejecutar el archivo .exe, se indica que MSVCR90.dll falta en mi computadora y es necesario para ejecutar mi progtwig.

También esto es Python 2.6.5 en Windows 7.

Para su problema original, no puedo decir cuál es exactamente el problema, pero por lo general ayuda con la prueba y error para adivinar los archivos y directorios faltantes. Si sabes lo que te estás perdiendo, data_files a tus packages (para módulos de Python) o data_files (para otros archivos).

El segundo problema es el resultado de algunos c-modules (y el propio Python) construidos con MS Visual Studio, por lo que dependen del tiempo de ejecución de MS Visual C ++ 9.0 (2008). Puedes resolver esto por medio de:

  • ser propietario de una copia de Visual Studio (Express Edition no cuenta), por lo que se le permite redistribuir las dependencias de MSVCR (con la condición de que prohíba a los usuarios reingresar, etc., de las partes dependientes)

  • indicando a sus usuarios la descarga del paquete redistribuible de MS Visual C ++ 2008 en Microsoft.

Encontré un error en el sitio virutalenv que sugería lo siguiente https://github.com/pypa/virtualenv/issues/93

para las ventanas en su directorio “C: \ Environments \ VirtualEnv \ Scripts \ctiv.bat” simplemente agregue las que están configuradas en la ruta correcta a TCL y TK para su versión de python

 set "TCL_LIBRARY=C:\Python27\tcl\tcl8.5" set "TK_LIBRARY=C:\Python27\tcl\tk8.5" 

y reinicia tu cmd o shell

Funcionó muy bien para mí cuando tuve este error.

py2exe no funciona con módulos, he oído hablar de uno llamado c_freeze que aparentemente funciona con módulos, ¿lo intentaste? http://cx-freeze.sourceforge.net/

Con respecto a MSVCR90.dll , vea esta publicación que lo empaqueta y tal vez menos preferible que el usuario la instale por separado.

Además, el problema específico en esa publicación era mío y todavía no entiendo la causa raíz. Dicho esto, una desinstalación completa de python y una reconstrucción limpia funcionaron muy bien … quizás ese sea tu problema también. py2exe proporciona RuntimeError: demasiado pronto para crear una imagen