2010-10-19 77 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