PyInstaller在Windows 7上失败:“找不到可用的init.tcl”

时间:2017-02-11 19:50:04

标签: python-2.7 tkinter windows-7 pyinstaller

我有一个使用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

3 个答案:

答案 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。在问题得到解决之前,您可以尝试一些解决方法:

解决方法1 - 手动复制丢失的文件

a related issue中所述,您可以手动从本地Python安装中复制丢失的文件。

  1. 找到您当地的Python安装。 (%LocalAppData%\Programs\Python
  2. 制作丢失文件夹(...\Python36-32\tcl\<missing_folder>
  3. 的副本
  4. 将副本移至应用程序的tcl文件夹(...\dist\<app_name>\tcl\<missing_folder>
  5. 解决方法2 - 使用--onefile

    运行

    --onefile模式运行PyInstaller似乎可以避免这个问题。

    但请注意,在单文件模式下运行会增加启动时间。

    解决方法3 - 降级到PyInstaller 3.1.0

    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库文件,并且可以正常工作。

注意:请勿移动文件,只需复制它们即可。