2010-02-08 2 views
5

Я пытаюсь создать исполняемый файл для Windows для приложения GUI в tkinter с помощью модуля ttk. Я сделал ех с cx_freeze, но когда я запустить приложение в консоли он дает мне следующую ошибку:cx_Freeze ImportError: не удается импортировать имя

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 

Вот строки 14 и 15 из моего кода:

import tkinter as tk 
import tkinter.ttk as ttk 

ответ

5

Выглядит как cx_freeze не понимает, что он должен включать модуль tkinter._fix, который условно импортируется tkinter/__init__.py. Вы можете сказать ему, чтобы включить этот модуль в явном виде с --include-modules аргументом командной строки, или аргумент includes ключевым слова для cx_Freeze.Executable в вашем setup.py

+0

спасибо, но теперь у меня есть ошибка с init.tcl, я решить эти Мануалы includig tcl8.5 и tk8.5 в папке dist, но я думаю, что это не лучшее решение. – Alquimista

+0

Правильно, замораживание вообще не лучшее решение. Приложение для замораживания (py2exe, cx_Freeze, py2app и т. Д.) Должно точно знать, что нужно упаковать. Все они пытаются угадать, какие модули Python нуждаются в этом, но, как вы видели, они иногда терпят неудачу. Зависимости от других файлов нельзя обрабатывать автоматически, поэтому они всегда проблематичны. –