Tkinter Cxfreeze 错误

1 投票
1 回答
1498 浏览
提问于 2025-04-16 05:11

我正在尝试把我在Linux上开发的Python程序做成Windows下的exe文件。这个程序在Windows的Python环境下可以正常运行,当我使用cxfreeze时,它也能顺利生成exe文件。但是,当我运行这个exe时,我遇到了以下问题:

C:\projects\0802001S\dist>listen.exe
Traceback (most recent call last):
  File "C:\Python26\lib\site-packages\cx_Freeze\initscripts\Console.py", line 27
, in <module>
    exec code in m.__dict__
  File "./listen.py", line 425, in <module>
  File "C:\Python26\lib\lib-tk\Tkinter.py", line 1643, in __init__
    self.tk = _tkinter.create(screenName, baseName, className, interactive, want
objects, useTk, sync, use)
_tkinter.TclError: Can't find a usable init.tcl in the following directories:
    C:/projects/0802001S/lib/tcl8.5 C:/projects/0802001S/lib/tcl
8.5 C:/projects/lib/tcl8.5 C:/projects/0802001S/library C:/projects/libr
ary C:/projects/tcl8.5.9/library C:/tcl8.5.9/library

这可能意味着Tcl没有正确安装。

于是,我在C盘的Python26目录里找到了init.tcl文件,并把它复制到了系统建议的某个目录里。结果我又遇到了这个错误:

C:\projects\0802001S\dist>listen.exe
Traceback (most recent call last):
  File "C:\Python26\lib\site-packages\cx_Freeze\initscripts\Console.py", line 27
, in <module>
    exec code in m.__dict__
  File "./listen.py", line 425, in <module>
  File "C:\Python26\lib\lib-tk\Tkinter.py", line 1643, in __init__
    self.tk = _tkinter.create(screenName, baseName, className, interactive, want
objects, useTk, sync, use)
_tkinter.TclError: invalid command name "tcl_findLibrary"

到这里我感觉遇到了瓶颈,也想起了我当初为什么会选择使用Linux。

有没有对Windows更熟悉的人能给点建议?

1 个回答

1

我刚遇到过类似的情况。到目前为止,我的结论是把tcl8.5和tk8.5这两个文件夹都复制到你运行listen.exe的目录里(也就是dist/build文件夹)。

我还在cx_freeze的邮件列表上看到,有人提到这个钩子可能只在Unix系统上运行,因为在当前这个版本(2010年12月29日)之前,从来没有在Windows上测试过。

撰写回答