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

4

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

当我将程序复制到Windows 7 x64时,遇到了类似的问题,完全感到困惑。但是复制到Win 8和10电脑上却没有问题。 - glexey
3个回答

1

正如RedPhantom所提到的, PyInstaller在Windows 7和Windows XP上的Tkinter应用程序中存在已知问题

由于这个问题已经存在了两年之久,我已经在Bountysource上发起了悬赏。在问题得到解决之前,你可以尝试一些解决方法:

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

相关问题中提到的,你可以从本地Python安装中手动复制缺失的文件。

  1. 找到本地的Python安装路径。 (%LocalAppData%\Programs\Python)
  2. 复制缺失的文件夹 (...\Python36-32\tcl\<missing_folder>)
  3. 将复制的文件夹移动到应用程序的 tcl 文件夹中 (...\dist\<app_name>\tcl\<missing_folder>)

解决方法2 - 使用 --onefile 运行

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

但是,请注意,单文件模式会增加启动时间。

解决方法3 - 降级到 PyInstaller 3.1.0

pip install pyinstaller==3.1.0

根据ugoertz的说法, 将PyInstaller降级到3.1.0可以解决这个问题。

将PyInstaller降级到3.1.0 (并且由于#1941中描述的问题,也需要将setuptools降级到19.2) 可以为我解决这个问题。


1
这是PyInstaller和Windows 7 64位机器上的Tkinter已知问题。在PyInstaller的GitHub存储库中有一个问题报告
在底部引用了另一个问题,即此问题,它说将版本降级至PyInstaller 3.1.0可帮助其他人解决此问题。
pip install pyinstaller==3.1.0

我自己使用虚拟机进行了确认。

由于这个问题已经存在了将近两年,我在Bountysource上为此问题开设了赏金。 - Stevoisiak

0
在您的情况下,您会发现Python目录中有Tcl8.X文件夹,它位于您在问题中提到的[目录列表]中未提及的位置。只需从这些目录列表中选择任何一个路径(最好是/lib)即可。
这将允许Python找到Tcl库文件并正常工作。
注意:不要移动文件,只需复制它们。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接