赞
踩
这几天在用python做一个软件,过程中用到tkdnd这个模块
tkdnd
是一个用于 Tkinter 的拖放 (drag-and-drop) 扩展库,提供了在 Tkinter 应用程序中实现拖放功能的支持。Tkinter 是 Python 的标准 GUI 库,而 tkdnd
提供了额外的功能,使得开发者可以在 Tkinter 应用程序中实现更高级的拖放操作。
做好以后在pycharm中运行是正常的,运行以下打包命令后,打开就会出现报错
pyinstaller --onefile --windowed ccc.py
- 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 "ccc.py", line 148, in <module>
- File "tkinterdnd2\TkinterDnD.py", line 285, in __init__
- File "tkinterdnd2\TkinterDnD.py", line 55, in _require
- RuntimeError: Unable to load tkdnd library.
这个打包后出现该报错原因就是没有将这个tkinterdnd2库打包进exe文件中
起初尝试了很多种方法,都没有成功将该库打包进去
后来查了网上很多资料也没有比较详细的解决办法,最终还是求助了chatgpt
我们将使用以下命令来打包你的 Python 脚本 ccc.py
,同时包含 tkinterdnd2
和 tkdnd
库。
地址就是库的安装地址
pyinstaller -F ccc.py --paths D:\python39\lib\site-packages --add-data "D:\python39\lib\site-packages\tkinterdnd2;tkinterdnd2" --add-data "D:\python39\lib\site-packages\tkdnd;tkdnd" --hidden-import=tkinterdnd2 --hidden-import=tkdnd --clean
-F
:将所有依赖打包成一个单独的可执行文件。ccc.py
:你的 Python 脚本。--paths D:\python39\lib\site-packages
:指定 Python 库路径。--add-data "D:\python39\lib\site-packages\tkinterdnd2;tkinterdnd2"
:将 tkinterdnd2
库添加到打包文件中。注意路径格式为 "源路径;目标路径"
,在 Windows 上使用分号 ;
分隔。--add-data "D:\python39\lib\site-packages\tkdnd;tkdnd"
:将 tkdnd
库添加到打包文件中。--hidden-import=tkinterdnd2
:显式指定 tkinterdnd2
作为隐藏导入。--hidden-import=tkdnd
:显式指定 tkdnd
作为隐藏导入。--clean
:清除 PyInstaller 使用的临时文件和缓存。在命令行或终端中运行上述命令:
复制代码
pyinstaller -F ccc.py --paths D:\python39\lib\site-packages --add-data "D:\python39\lib\site-packages\tkinterdnd2;tkinterdnd2" --add-data "D:\python39\lib\site-packages\tkdnd;tkdnd" --hidden-import=tkinterdnd2 --hidden-import=tkdnd --clean
如果在打包过程中遇到问题,可以将输出重定向到一个日志文件中,以便详细检查:
pyinstaller -F ccc.py --paths D:\python39\lib\site-packages --add-data "D:\python39\lib\site-packages\tkinterdnd2;tkinterdnd2" --add-data "D:\python39\lib\site-packages\tkdnd;tkdnd" --hidden-import=tkinterdnd2 --hidden-import=tkdnd --clean > build_log.txt 2>&1
这样所有输出(包括错误信息)都会保存到 build_log.txt
文件中,你可以查看该文件以获取详细的调试信息。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。