【发布时间】:2021-11-19 17:15:00
【问题描述】:
在我的脚本中,我使用 tkinterdnd2 库来实现从 Windows 资源管理器拖放到我的 tkinter UI 的功能。
from tkinterdnd2 import TkinterDnD, DND_FILES
import tkinter as tk
class TkWindow:
def __init__(self):
self.window = TkinterDnD.Tk()
self.tbox = tk.Listbox(self.window)
self.tbox.pack(fill=tk.BOTH)
self.tbox.drop_target_register(DND_FILES)
self.tbox.dnd_bind('<<Drop>>', self.tk_files_dropped)
self.window.mainloop()
def tk_files_dropped(self, event):
messagebox.showinfo("x", event.data)
TkWindow()
当我启动脚本时 - 一切正常。
但是当我使用 PyInstaller 将项目冻结为单个 EXE 并运行它时,我收到此错误:
我已经尝试过这个解决方案:
-
我在
tkinterdnd2存储库中添加了pyinstaller-hook as instructed:from PyInstaller.utils.hooks import collect_data_files, eval_statementdatas = collect_data_files('tkinterdnd2') -
我在执行构建命令时添加
--collect-all tkinterdnd2。 -
我尝试将
tkdnd2.8复制到tcl8.6,如this answer 中所述 -
我尝试摆脱 venv 并将所有软件包直接安装到基本 python 解释器中。
【问题讨论】:
-
当我遇到 pyinstaller 问题时,我尝试了不同的方法,但直到我在命令提示符下运行 pip uninstall 并且它工作正常后才奏效。
-
@CEO 你的意思是卸载和安装pyinstaller吗?也试过了。
-
并非如此。那就让我写在答案部分吧
-
您的代码在代码编辑器中运行是否没有任何错误?
-
是的。没有任何错误。完整的回购在这里:github.com/deshudiosh/PyWykladzinyLayout
标签: python tkinter pyinstaller