2010-10-19 91 views
4

我想要使用py2exe将基本的tkinter GUI程序转换为.exe。但是,我遇到了一个错误使用以下转换脚本。与Tkinter的Py2exe

# 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从我的计算机中丢失,需要运行我的程序。

而且这是蟒蛇2.6.5在Windows 7

+2

我在Win7 64位版本中遇到了类似的问题,这两个类都是针对Python 2.6.4的py2exe和针对Python 3.1.2的cx_Freeze。我发现tcl子目录(tcl8.5和tk8.5)未包含在生成的dist目录中。我将Python26 \ tcl中的两个目录分别复制到dist \ tcl8.6和dist \ tk8.5,并且py2exe生成的二进制文件停止抱怨丢失的tcl.I最终重新安装了py2exe,问题消失。现在在py2exe树脂安装后,tcl目录现在位于dist \ tcl \ tcl8.5和dist \ tcl \ tk8.5下。 – JTP 2010-10-19 05:33:47

回答

2

对于您原来的问题,我不能说究竟是什么问题,但通常它与试错来猜测丢失的文件帮助和目录。如果您知道缺少什么,请将它们添加到packages(用于python模块)或data_files(用于其他文件)。

第二个问题是某些c-modules(和python本身)与MS Visual Studio一起构建的结果,因此对MS Visual C++ 9.0(2008)运行时具有依赖性。您可以通过解决这个问题:

  • 拥有的Visual Studio的副本(Express版本不计),让你被允许重新分配MSVCR依赖(你禁止用户reengeneering等的条件下, 。)

  • 指示用户在Microsoft下载MS Visual C++ 2008 Redistributable软件包。

1

我发现这表明以下 https://github.com/pypa/virtualenv/issues/93

窗户 在目录“C在virutalenv网站的错误:\脚本\环境\ VIRTUALENV \激活。蝙蝠” 只需添加其设置为正确的道路,TCL和TK为您的Python版本

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

,并重新启动CMD或外壳

它的工作对我非常好,当我有这个错误。

0

对于MSVCR90.DLL,看到这个帖子的软件包它,也许有比用户单独安装不太可取。

而且,具体问题在该职位是我的,我仍然不明白根本原因。也就是说,一个完整的卸载python和干净的重建很好...也许这也是你的问题。 py2exe gives RuntimeError: Too early to create image