【问题标题】:PyInstaller fails on Windows 7: "Can't find a usable init.tcl"PyInstaller 在 Windows 7 上失败:“找不到可用的 init.tcl”
【发布时间】:2017-06-30 01:08:37
【问题描述】:

我有一个使用 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 计算机可以正常工作。

标签: python-2.7 tkinter windows-7 pyinstaller


【解决方案1】:

这是 Windows 7 64 位机器上 PyInstaller 和 Tkinter 的一个已知问题。 PyInstaller 的 GitHub 仓库中有一个issue report

一直以来,这个问题都是从另一个问题引用的,即this one,它说降级到 PyInstaller 3.1.0 可以帮助其他人解决问题。

pip install pyinstaller==3.1.0

我自己已经能够使用虚拟机确认这一点。

【讨论】:

  • 由于这个问题已经将近两年没有解决,I've opened a bounty 为 Bountysource 上的问题。
【解决方案2】:

As RedPhantom mentioned,PyInstaller 有a known issue 与 Windows 7 和 Windows XP 上的 Tkinter 应用程序。

由于这个问题已经两年没有解决了,我已经继续并started a bounty on Bountysource。在问题得到解决之前,您可以尝试一些解决方法:

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

a related issue 中所述,您可以从本地 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

According to ugoertz,降级到 PyInstaller 3.1.0 解决了这个问题。

降级到 3.1.0(由于#1941 中描述的问题,还将 setuptools 降级到 19.2)为我解决了这个问题。

【讨论】:

    【解决方案3】:

    在您的情况下,您会发现 python 目录中有 Tcl8.X 文件夹,它位于[目录列表]中未提及的位置,您在问题中提到。只需从这些目录列表中选择任何路径(最好是 /lib )。

    这将允许 python 找到 Tcl 库文件并且它会工作。

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

    【讨论】:

      猜你喜欢
      • 2018-10-07
      • 1970-01-01
      • 2018-09-18
      • 2013-05-10
      • 2011-07-28
      • 2013-05-12
      • 2012-01-16
      • 1970-01-01
      相关资源
      最近更新 更多