Py2exe与Tkinter


问题内容

我正在尝试使用py2exe将基本的tkinter GUI程序转换为.exe。但是,使用以下转换脚本遇到了错误。

# C:\Python26\test_hello_con.py py2exe

from distutils.core import setup
import py2exe

setup(windows=[r'C:\Python26\py2exe_test_tk.py'])

C:\ Python26 \ py2exe_test_tk.py是以下代码

import Tkinter as tk

root = tk.Tk()
root.title("Test")


label1 = tk.Label(root,text="Hello!",font=('arial', 10, 'bold'), bg='lightblue')
label1.pack(ipadx=100, ipady=100)


root.mainloop()

这是我尝试运行新创建的.exe时遇到的错误

Traceback (most recent call last):
  File "py2exe_test_tk.py", line 4, in <module>
  File "Tkinter.pyc", line 1643, in __init__
_tkinter.TclError: Can't find a usable init.tcl in the following directories: 
    {C:/Users/My_Name/lib/tcl8.5} {C:/Users/My_Name/lib/tcl8.5} C:/Users/lib/tcl8.5 {C:/Users/My_Name/library} C:/Users/library C:/Users/tcl8.5.8/library C:/tcl8.5.8/library



This probably means that Tcl wasn't installed properly.

我很确定这是我的转换脚本给我带来的问题。我省略了什么?还是有人举个例子说明了tkinter
GUI程序的转换脚本是什么样的?还可以将输出的.exe文件转移到我的桌面上吗?

编辑:

错误报告说我失踪了 init.tcl中{C:/Users/My_name/lib/tcl8.5} 。所以我做了那个目录,并把
init.tcl 的副本 放在 那里。现在,当我尝试运行.exe时,它表明我的计算机中缺少 MSVCR90.dll
,并且需要它来运行我的程序。

这也是Windows 7上的python 2.6.5。


问题答案:

对于您的原始问题,我无法 确切
说明问题所在,但通常可以通过反复试验来猜测丢失的文件和目录。如果知道丢失的内容,请将它们添加到packages(对于python模块)或data_files(对于其他文件)。

第二个问题是使用MS Visual Studio构建某些c模块(和python本身)的结果,因此依赖于MS Visual C ++
9.0(2008)运行时。您可以通过以下任一方法解决此问题:

  • 拥有Visual Studio的副本(不包括Express Edition),因此允许您重新分发MSVCR依赖项(在您禁止用户重新激活依赖项等的条件下)

  • 将您的用户指向Microsoft下载的MS Visual C ++ 2008可再发行组件包。