2010-02-08 8 views
5

Ich versuche eine ausführbare Datei für Windows für eine GUI-Anwendung in tkinter mit dem ttk-Modul zu erstellen. Ich habe eine exe mit cx_freeze, aber wenn ich die App in der Konsole ausführen, es gibt mir die folgende Fehlermeldung:cx_Freeze ImportError: Name kann nicht importiert werden

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 

Hier sind die Linien 14 und 15 von meinem Code:

import tkinter as tk 
import tkinter.ttk as ttk 

Antwort

5

Sieht aus wie cx_freeze erkennt nicht, dass es das tkinter._fix Modul enthalten sollte, das von tkinter/__init__.py bedingt importiert wird. Sie können ihm sagen, dass Modul explizit mit dem --include-modules Befehlszeilenargument enthalten, oder das includes Stichwort Argument cx_Freeze.Executable in Ihrem setup.py

+0

Dank aber jetzt habe ich einen Fehler mit init.tcl, löse ich diese manualy includig tcl8.5 und tk8.5-Ordner im Ordner dist, aber ich denke, das ist nicht die beste Lösung. – Alquimista

+0

Das ist richtig, Einfrieren im Allgemeinen ist nicht die beste Lösung :) Die Einfrier-App (py2exe, cx_Freeze, py2app usw.) muss genau wissen, was sie zusammenpacken soll. Sie alle versuchen zu erraten, welche Python-Module sie benötigen, aber wie Sie gesehen haben, scheitern sie manchmal. Abhängigkeiten von anderen Dateien können nicht automatisch behandelt werden, so dass sie immer problematisch sind. –