我制作了一个使用 tkinter 和 tkinterdnd 模块的应用程序。当我将其作为脚本启动时,它工作得很好,但是当我尝试从中创建可执行文件并启动它时,会出现以下错误:
Traceback (most recent call last):
File "TkinterDnD2\TkinterDnD.py", line 53, in _require
_tkinter.TclError: can't find package tkdnd
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "IxcomGUI.py", line 128, in <module>
File "IxcomGUI.py", line 11, in __init__
File "TkinterDnD2\TkinterDnD.py", line 285, in __init__
File "TkinterDnD2\TkinterDnD.py", line 55, in _require
RuntimeError: Unable to load tkdnd library.
[14512] Failed to execute script 'IxcomGUI' due to unhandled exception!
我尝试了以下操作:
- 安装了 tkinterdnd2
pip install
并用构建pyinstaller myscript.py
.
- 手动安装 tkinterdnd2 模块,如本视频所示并用构建
pyinstaller myscript.py
- 重复之前的步骤,但添加了这个东西https://github.com/pmgagne/tkinterdnd2/blob/master/hook-tkinterdnd2.py
- 试图通过使用 --paths 标志指定模块路径来隐式告诉 pyinstaller tkdnd 模块的路径。
所有这些尝试都会导致以下错误。有谁知道某种解决方案?
这里的问题是拖放需要两个组件:TCL 库和它们的 Tkinter 接口。我手动安装两者来配置我的环境。 (参见我的回答如何在 OSX 上通过 Python Tkinter 安装和使用 TkDnD?)。我知道有人在 PyPI 上为 TkinterDnD2 打包了一些东西,但我还没有研究过。
我有一个使用 TkinterDnD2 的项目。我用 PyInstaller 构建它并看到与您看到的相同的错误(或多或少)。使用 --onedir 选项(而不是 --onefile 选项)运行 PyInstaller,我看到tkdnd2.8
我的身上不见了dist
目录。
为了纠正这个问题,在 Windows 上,我添加了
--add-binary "C:/Python/Python38-32/tcl/tkdnd2.8;tkdnd2.8"
到 PyInstaller 命令行,就成功了。我现在可以构建一个 --onefile 可执行文件,并且它运行时没有错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)