5

I'm trying create an executable for Windows for a GUI application in tkinter using the ttk module. I made an exe with cx_freeze, but when I run the app in the console it gives 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

Here are lines 14 and 15 from my code:

import tkinter as tk
import tkinter.ttk as ttk
Craig McQueen
  • 41,871
  • 30
  • 130
  • 181
Alquimista
  • 862
  • 2
  • 10
  • 24

1 Answers1

5

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
  • 130,178
  • 23
  • 148
  • 122
  • 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 Feb 08 '10 at 17:24
  • 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 Feb 08 '10 at 17:45