4

我正在尝试使用 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。

4

4 回答 4

2

对于您最初的问题,我无法说出究竟什么 问题,但通常有助于通过反复试验来猜测丢失的文件和目录。如果您知道自己缺少什么,请将它们添加到您的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 Redistributable软件包的下载。

于 2010-11-11T21:45:32.170 回答
1

我在 virutalenv 网站上发现了一个错误,它建议以下 https://github.com/pypa/virtualenv/issues/93

对于您目录“C:\Environments\VirtualEnv\Scripts\activate.bat”中的窗口,只需添加设置为您的 python 版本的 TCL 和 TK 的正确路径

set "TCL_LIBRARY=C:\Python27\tcl\tcl8.5"
set "TK_LIBRARY=C:\Python27\tcl\tk8.5"

并重新启动您的 cmd 或 shell

当我遇到此错误时,它对我来说非常有效。

于 2015-07-22T10:14:55.377 回答
0

py2exe 不适用于模块,我听说过一个名为 c_freeze 的模块,它显然适用于模块,试试看?http://cx-freeze.sourceforge.net/

于 2013-09-13T17:28:06.653 回答
0

关于MSVCR90.dll,请参阅将其打包的这篇文章,并且可能不如让用户单独安装它。

此外,该帖子中的具体问题是我的,我仍然不明白根本原因。也就是说,完全卸载 python 和干净的重建效果很好......也许这也是你的问题。py2exe 给出 RuntimeError: Too early to create image

于 2016-12-09T05:26:08.773 回答