views:

472

answers:

1

I'm trying do a executable for windows for a gui aplication in tkinter using the ttk, I made a exe with cx_freeze, but when run the app in the console, it give me the following error.

    D:\My Dropbox\python\SAR Calculator\src\dist_tk>
Traceback (most recent call last):

  File "C:\Python31\lib\site-packages\cx_Freeze\
7, in <module>

    exec(code, m.__dict__)

  File "sarcalc_tk.py", line 14, in <module>

  File "C:\Python31\lib\tkinter\__init__.py", li

    from tkinter import _fix

ImportError: cannot import name _fix

This are my lines 14 and 15

import tkinter as tk
import tkinter.ttk as ttk
A: 

Looks like cx_freeze doesn't realize it should include the tkinter._fix module, which is conditionally imported by tkinter/__init__.py. You can tell it to include that module explicitly with the --include-modules command-line argument, or the includes keyword argument to cx_Freeze.Executable in your setup.py

Thomas Wouters
thanks but now I have a error with init.tcl, I solve this manualy includig tcl8.5 and tk8.5 folder in the dist folder, but I think is not the best solution.
Alquimista
That's right, freezing in general is not the best solution :) The freezing app (py2exe, cx_Freeze, py2app, etc) needs to know exactly what to package up. They all try to guess which Python modules need including, but as you've seen they sometimes fail. Dependencies on other files can't be handled automatically, so they're always problematic.
Thomas Wouters