了解分发冻结的Python Tkinter应用所需的TCL文件

2 投票
2 回答
3460 浏览
提问于 2025-04-16 05:16

我正在尝试弄清楚在Python(Python 2.6/Python 2.7)的tcl文件夹中,哪些文件是必须的,以便使用Py2exe或类似工具来分发冻结的Python Tkinter应用程序。

一个简单粗暴的方法(以pyexe为例)是按照下面页面的第二个示例操作,然后把你的Python的tcl文件夹复制到你的dist文件夹中(作为一个tcl子文件夹)。
http://www.py2exe.org/index.cgi/TixSetup

不过,使用xcopy复制tcl文件夹的方法有个问题,就是它会复制很多可能不需要的额外文件。

例如,我的实验显示,在冻结Python 2.7 Tkinter应用程序时,以下这些tcl文件夹可能(??)是不需要的:

注意:数字大小是每个路径下所有文件的总和。

  • tcl\tcl8.5\encoding 1415K(可以删除不适用的编码吗?有需要的UTF-8/Unicode编码吗?)
  • tcl\tcl8.5\tzdata 1450K(tcl时钟演示的时区数据?)
  • tcl\tcl8.5*.tcl 256K
  • tcl\tix8.4.3\demos 246K
  • tcl\tk8.5\demos 685K

我这样做是对的方向吗?如果不包括上述tcl内容,未来会不会遇到麻烦?

更好的是,有没有关于Python的tcl文件夹中这些文件的文档?

谢谢,
Malcolm

2 个回答

3

Donal说得没错,当然了。不过,你的问题也引起了其他好几个人的关注;如果你想深入了解这个问题,我强烈建议你去看看 Tkinter邮件列表 和相关的 维基

5

你不需要那些演示(我希望如此;如果需要,那就太糟糕了!),但其他的东西可能是必须的。编码是用来在外部世界的字节和Tcl的字符之间转换的,而tzdata是用来处理时间的。你可以在把应用程序交给小范围用户时省略编码和tzdata——实际上,在Unix系统上,你可能可以完全不需要tzdata,因为系统会有最新的版本——但你要知道这样做会限制代码的可移植性。

撰写回答