【问题标题】:cx_Freeze ImportError: cannot import namecx_Freeze ImportError:无法导入名称
【发布时间】:2010-02-08 16:37:02
【问题描述】:

我正在尝试使用 ttk 模块为 tkinter 中的 GUI 应用程序创建适用于 Windows 的可执行文件。我用 cx_freeze 制作了一个 exe,但是当我在控制台中运行该应用程序时,它给了我以下错误:

    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

【问题讨论】:

    标签: python python-3.x tkinter exe cx-freeze


    【解决方案1】:

    看起来 cx_freeze 没有意识到它应该包含 tkinter._fix 模块,该模块由 tkinter/__init__.py 有条件地导入。您可以告诉它使用--include-modules 命令行参数或cx_Freeze.Executable 中的cx_Freeze.Executable 关键字参数显式包含该模块

    【讨论】:

    • 谢谢,但现在我的 init.tcl 出错了,我手动解决了这个问题,包括 dist 文件夹中的 tcl8.5 和 tk8.5 文件夹,但我认为这不是最好的解决方案。
    • 没错,一般来说冻结不是最好的解决方案:) 冻结应用程序(py2exe、cx_Freeze、py2app 等)需要确切知道要打包什么。他们都试图猜测需要包含哪些 Python 模块,但正如您所见,它们有时会失败。对其他文件的依赖不能自动处理,所以总是有问题。
    猜你喜欢
    • 1970-01-01
    • 2013-04-24
    • 1970-01-01
    • 2016-03-31
    • 2014-10-10
    • 2014-09-20
    • 2014-08-28
    • 2014-06-10
    • 2016-05-16
    相关资源
    最近更新 更多