我做了一个slideshow.py文件,以显示与Tkinter的部件一些照片修正,它完美地运行在我的Windows和Linux。 为了使它在Windows上运行,而不Python和TCL安装,我用py2exe把它编译成一个Win32可执行程序,setup.py很简单:
from distutils.core import setup
import py2exe
setup(windows=["slideshow.py"])
然后我运行 “蟒蛇setup.py py2exe”,它产生在C “DIST” 文件夹:\用户\ d2xia \ ccm_wa \ utils的\ TFPS \,和 “TCL”, “library.zip”, “slideshow.exe” 和等下吧。
当我运行slideshow.exe它的错误:
Traceback (most recent call last):
File "slideshow.py", line 45, in <module>
File "Tkinter.pyc", line 1685, in __init__
_tkinter.TclError: Can't find a usable init.tcl in the following directories:
C:/Users/d2xia/ccm_wa/utils/tfps/lib/tcl8.5 C:/Users/d2xia/ccm_wa/utils/tfps/lib/tcl8.5 C:/Users/d2xia/ccm_wa/utils/lib/tcl8.5 C:/Users/d2xia/ccm_wa/utils/tfps/library C:/Users/d2xia/ccm_wa/utils/library C:/Users/d2xia/ccm_wa/utils/tcl8.5.11/library C:/Users/d2xia/ccm_wa/tcl8.5.11/library
TCL8.5和tk8.5实际上位于“TCL”文件夹下,但似乎由py2exe生成的exe看起来仍然在“LIB”或“库”,现在看来,这并没有设置正确的TCL_LIBRARY和TK_LIBRARY。
即使我重新命名“TCL”为“LIB”,它仍然得到同样的错误。
set TCL_LIBRARY=c:\Users\d2xia\ccm_wa\utils\tfps\dist\tcl\tcl8.5\
set TK_LIBRARY=c:\Users\d2xia\ccm_wa\utils\tfps\dist\tcl\tk8.5\
然后slideshow.exe产生了一些新的错误:
c:/Users/d2xia/ccm_wa/utils/tfps/dist/tcl/tcl8.5/init.tcl: version conflict for package "Tcl": have 8.5.11, need exactly 8.5.2
version conflict for package "Tcl": have 8.5.11, need exactly 8.5.2
while executing
"package require -exact Tcl 8.5.2"
(file "c:/Users/d2xia/ccm_wa/utils/tfps/dist/tcl/tcl8.5/init.tcl" line 20)
invoked from within
"source c:/Users/d2xia/ccm_wa/utils/tfps/dist/tcl/tcl8.5/init.tcl"
("uplevel" body line 1)
invoked from within
"uplevel #0 [list source $tclfile]"
我的Tcl 8.5.11在C:\ APPS \ git的\ LIB \ TCL8.5和Tcl 8.5.2在C:\ Python27 \ TCL \ TCL8.5看来,当我使用python运行,它看起来对TCL在Python安装路径,但py2exe看起来git的安装路径不同的副本。
那么接下来的问题变成:1。如何“分配”正确TCL8.5副本py2exe时创建DIST? 2.如何让生成的可执行文件知道在dist TCL的路径? “TCL”,而不是“LIB”或“库”