如何纠正TCL_LIBRARY和TK_LIBRARY与py2exe(How to correct T

2019-09-23 00:56发布

我做了一个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”或“库”

Answer 1:

通过手动解决的Tcl版本8.5.11和8.5.2冲突取代TCL8.5,tk8.5,tcl85.dll和tk85.dll与Python安装路径的,我相信它也可以通过改变PATH环境变量求解。 但我还是要手动设置TCL_LIBRARY和TK_LIBRARY,我做了一个Windows批处理包装下的test.bat:

set TCL_LIBRARY=.\tcl\tcl8.5\
set TK_LIBRARY=.\tcl\tk8.5\
slideshow.exe %1

这工作,更好的想法?



Answer 2:

正确的Tcl和Tk安装将不得不在编译时间烤到它的环境变量的权值; 他们只真的存在允许在安装前测试(用于的Tcl / Tk的开发人员非常有用的其他人,最好避免使用)。 如果他们没有连接正确,或发现脚本库的版本不对,有一个与你安装一个严重的问题。 (请注意,这并不意味着你应该不能正常走动安装后的事情,但没有太多对大多数人的问题。)

在这种情况通常的建议是擦拭Tcl和Tk安装并重新启动,确保了正确的安装位置被指定为configure通过--prefix选项。 我不知道加的Python到组合如何影响的事情。



文章来源: How to correct TCL_LIBRARY and TK_LIBRARY with py2exe