作者:mobiledu2502857017 | 来源:互联网 | 2023-02-01 12:59
刚开始使用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应用程序?如果是这样,请分享!我已经进行了大量的搜索和阅读,但是还无法发现问题所在。如果有人有线索,请帮助。任何指导,不胜感激!
一些额外的信息。不知道为什么PyInstaller说Tcl / Tk没有正确安装。我刚安装了Python 3.5.3,并自动安装了tkinter。在shell中执行了'tkinter._text()',它看起来工作正常。在python的正常使用下,我对tkinter的所有使用在所有版本的3.5下都可以正常工作。我遇到的唯一tkinter问题是PyInstaller。验证了使用'tkinter.Tcl()。eval('info patchlevel')'安装的Tcl / Tk的确切版本,并且报告为'8.6.4'。有人知道Tcl / Tk可能有其他安装问题吗?我对安装tkinter并没有做任何特别的事情,只是通过'pip install pyinstaller'进行了pyinstaller的常规安装。在全新安装'python 3.5.3'之后。还有什么我应该做的吗?任何帮助是极大的赞赏!!!
1> 小智..:
在查看https://pythonhosted.org/PyInstaller/hooks.html#understanding-pyinstaller-hooks后,我在tkinter和python 3.5中遇到了类似的问题
添加--hidden-import tkinter选项
pyinstaller --onefile-隐藏导入tkinter hello.py