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:无法导入名称的主要内容,如果未能解决你的问题,请参考以下文章
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__