在python 3.5上使用tkinter app的Pyinstaller问题

问题描述 投票:2回答:2

刚刚开始使用Pyinstaller(有些使用Tk窗口)并且无法让我的tkinter windows应用程序(在python 3.5下)成功运行。我可能做了一些愚蠢的事情,但我已经尝试了我所知道的一切,我真的需要让它运行,所以任何帮助都非常感谢。只需注意,我的所有代码在正常的python 3.5.1和3.5.3下运行正常。安装了最新版本的PyInstaller(3.2.1),它似乎运行正常。

我切换到以下简单的窗口“Hello World!”应用程序,看看我是否可以让它工作,

from tkinter import *
root = Tk()
root.title("Test Window")

#Setup window widgets and place on window
l1 = Label(root,text='Hello World!',font=("Verdana",18))
l2 = Label(root,text='Hello World!',font=("Times New Roman",9))
b1 = Button(root, text='Button 1', font=("Verdana",12), state=DISABLED)
b1.pack()
b1.place(x=220, y=180)

l1.pack()
l1.place(x=170, y=10)
l2.place(x=200, y=60)

root.mainloop()

但它似乎与我的原始应用程序有相同的问题。

也许这只是因为我是PyInstaller的新手,但我发现文档很难找到具体的答案。但是看得更深一点,我决定在命令行中添加-d选项,以便在尝试执行我的应用程序时查看调试输出,因此我使用的完整命令行是:> pyinstaller -F -w -dc :\ PythonApps \ Hello.py。这给了我很多以此错误消息结尾的信息:

无法执行脚本pyi_rth_tkinter。

这是我在原始程序中看到的同样错误。我能够在我的系统上找到'pyi_rth_tkinter.py'(实际上是该文件的2个版本),不确定为什么PyInstaller在执行它时遇到问题。但是,由于该文件向Tcl和Tk数据目录发出有关路径问题的错误消息,因此即使它已找到并运行该文件,也无论如何都猜测它会失败。

好的,在运行PyInstaller期间更仔细地查看输出,我看到有几行看起来可能导致我的问题:

3541 INFO: Loading module hook 'hook-_tkinter.py'
ImportError: cannot import name 'Tcl'
3659 ERROR: Tcl/Tk improperly installed on this system.

我查看了“hook-_tkinter.py”钩子文件(并通过PyInstaller文档阅读),但没有看到任何明显的错误。但是我并不完全了解钩子文件的所有细节以及它们需要包含的内容(任何人都可以帮助这个???)。不完全确定问题是什么,但似乎PyInstaller遇到链接到tkinter的问题,这导致我的应用程序无法运行。有任何GOTTEN PyInstaller 3.2.1执行一个简单的PYTHON 3.5 WINDOWS APP?如果是这样,请分享如何!我已经完成了大量的搜索和阅读,但还未能发现问题所在。如果有人有线索,请帮忙。非常感谢任何指导!


一些额外的信息。不确定为什么PyInstaller说没有正确安装Tcl / Tk。我刚刚安装了Python 3.5.3并自动安装了tkinter。在shell中执行'tkinter._text()',它似乎工作正常。在正常使用python的情况下,我对tkinter的所有使用在所有版本的3.5下似乎也能正常工作。我只有使用PyInstaller的tkinter问题。验证了使用'tkinter.Tcl()。eval('info patchlevel')'安装的Tcl / Tk的确切版本,并报告了'8.6.4'。有没有人知道Tcl / Tk的任何其他安装问题可能有问题?我没有做任何特别的安装tkinter,我只是在完成'python 3.5.3'的全新安装后通过'pip install pyinstaller'正常安装了pyinstaller。还有什么我应该做的吗?任何帮助是极大的赞赏!!!

python pyinstaller
2个回答
4
投票

在查看https://pythonhosted.org/PyInstaller/hooks.html#understanding-pyinstaller-hooks之后,我遇到了与tkinter和python 3.5类似的问题

添加--hidden-import tkinter选项

pyinstaller --onefile --hidden-import tkinter hello.py


0
投票

我遇到了同样的问题,被困了6个小时寻找正确的答案。现在我在完成以下步骤后为我工作:

  1. 卸载所有Python解释器。
  2. 下载Python-2.7.16.amd64版本(适用于64位操作系统)或Python-2.7.16版本(适用于32位操作系统)。
  3. 转到此PC - >高级系统设置 - >环境变量
  4. 选择Path并单击Edit
  5. 添加以下路径: C:\ Python27 \ Scripts \ b。 C:\ Python27 \
  6. 打开cmd
  7. 输入“pip install pyinstaller”
  8. 安装pyinstaller后,导航到程序所在的文件夹(即在tkinter GUI中)
  9. 在cmd中,键入: pyinstaller program.py

这将解决你的问题。

我找到的解决方案是卸载所有的Python解释器并安装2.7版本。

附: stackoverflow的新功能

© www.soinside.com 2019 - 2024. All rights reserved.