cx_Freeze ImportError:无法导入名称

Posted

技术标签:

【中文标题】cx_Freeze ImportError:无法导入名称【英文标题】:cx_Freeze ImportError: cannot import name 【发布时间】: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

【问题讨论】:

【参考方案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 模块,但正如您所见,它们有时会失败。对其他文件的依赖不能自动处理,所以总是有问题。

以上是关于cx_Freeze ImportError:无法导入名称的主要内容,如果未能解决你的问题,请参考以下文章

cx_Freeze 的问题 - ImportError

PySide (1.1.2), cx_freeze, WinXP, Python 3.3: ImportError: DLL load failed

ImportError:运行我的应用程序时没有名为“队列”的模块被 cx_freeze 冻结

Python 2.7 Cx_Freeze: ImportError: No module named __startup__

Python 2.7 Cx_Freeze: ImportError: No module named __startup__

cx_freeze ImportError:没有名为“idna”的模块