我有一个使用Tkinter的基本Python脚本。
from Tkinter import Tk
from tkFileDialog import askdirectory
Tk().withdraw()
print askdirectory()
用PyInstaller编译脚本后,我尝试在没有安装Python的Windows 7(64位)计算机上运行我的程序。
它引发了这个错误:
Can't find a usable init.tcl in the following directories: [list of directories]
This probably means that Tcl wasn't installed properly
为什么我的脚本在使用PyInstaller编译后找不到init.tcl
?
答案 0 :(得分:1)
这是Windows 7 64位计算机上PyInstaller和Tkinter的已知问题。 PyInstaller的GitHub存储库中有一个issue report。
从最底层开始,这个问题引用了另一个问题,即this one,它说降级到PyInstaller 3.1.0可以帮助其他人解决问题。
pip install pyinstaller==3.1.0
我自己已经能够使用虚拟机确认这一点。
答案 1 :(得分:1)
As RedPhantom mentioned,PyInstaller在Windows 7和Windows XP上有a known issue个Tkinter应用程序。
由于这个问题已经解决了两年,我继续前进started a bounty on Bountysource。在问题得到解决之前,您可以尝试一些解决方法:
如a related issue中所述,您可以手动从本地Python安装中复制丢失的文件。
%LocalAppData%\Programs\Python
)...\Python36-32\tcl\<missing_folder>
)tcl
文件夹(...\dist\<app_name>\tcl\<missing_folder>
)--onefile
以--onefile
模式运行PyInstaller似乎可以避免这个问题。
但请注意,在单文件模式下运行会增加启动时间。
pip install pyinstaller==3.1.0
According to ugoertz,降级到PyInstaller 3.1.0解决了这个问题。
降级到3.1.0(并且因为#1941中描述的问题而将setuptools降级到19.2)为我解决了这个问题。
答案 2 :(得分:0)
在您的情况下,您会发现python目录中有Tcl8.X文件夹,它位于您在问题中提到的[目录列表]中未提及的位置。只需从这些目录列表(最好是/ lib)中选择任何路径即可。
这将允许python查找Tcl库文件,并且可以正常工作。
注意:请勿移动文件,只需复制它们即可。