Pyinstaller 打包exe后,打开出现can‘t find package tkdnd 报错

2024-06-16 20:44

本文主要是介绍Pyinstaller 打包exe后,打开出现can‘t find package tkdnd 报错,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这几天在用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 tkdndDuring 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

PyInstaller 命令

我们将使用以下命令来打包你的 Python 脚本 ccc.py,同时包含 tkinterdnd2tkdnd 库。

地址就是库的安装地址

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 文件中,你可以查看该文件以获取详细的调试信息。

这篇关于Pyinstaller 打包exe后,打开出现can‘t find package tkdnd 报错的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1067498

相关文章

kkFileView启动报错:报错2003端口占用的问题及解决

《kkFileView启动报错:报错2003端口占用的问题及解决》kkFileView启动报错因office组件2003端口未关闭,解决:查杀占用端口的进程,终止Java进程,使用shutdown.s... 目录原因解决总结kkFileViewjavascript启动报错启动office组件失败,请检查of

解决1093 - You can‘t specify target table报错问题及原因分析

《解决1093-Youcan‘tspecifytargettable报错问题及原因分析》MySQL1093错误因UPDATE/DELETE语句的FROM子句直接引用目标表或嵌套子查询导致,... 目录报js错原因分析具体原因解决办法方法一:使用临时表方法二:使用JOIN方法三:使用EXISTS示例总结报错原

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

MySQL 打开binlog日志的方法及注意事项

《MySQL打开binlog日志的方法及注意事项》本文给大家介绍MySQL打开binlog日志的方法及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、默认状态二、如何检查 binlog 状态三、如何开启 binlog3.1 临时开启(重启后失效)

qt5cored.dll报错怎么解决? 电脑qt5cored.dll文件丢失修复技巧

《qt5cored.dll报错怎么解决?电脑qt5cored.dll文件丢失修复技巧》在进行软件安装或运行程序时,有时会遇到由于找不到qt5core.dll,无法继续执行代码,这个问题可能是由于该文... 遇到qt5cored.dll文件错误时,可能会导致基于 Qt 开发的应用程序无法正常运行或启动。这种错

Python程序打包exe,单文件和多文件方式

《Python程序打包exe,单文件和多文件方式》:本文主要介绍Python程序打包exe,单文件和多文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python 脚本打成exe文件安装Pyinstaller准备一个ico图标打包方式一(适用于文件较少的程

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

MySQL启动报错:InnoDB表空间丢失问题及解决方法

《MySQL启动报错:InnoDB表空间丢失问题及解决方法》在启动MySQL时,遇到了InnoDB:Tablespace5975wasnotfound,该错误表明MySQL在启动过程中无法找到指定的s... 目录mysql 启动报错:InnoDB 表空间丢失问题及解决方法错误分析解决方案1. 启用 inno

Maven项目打包时添加本地Jar包的操作步骤

《Maven项目打包时添加本地Jar包的操作步骤》在Maven项目开发中,我们经常会遇到需要引入本地Jar包的场景,比如使用未发布到中央仓库的第三方库或者处理版本冲突的依赖项,本文将详细介绍如何通过M... 目录一、适用场景说明​二、核心操作命令​1. 命令格式解析​2. 实战案例演示​三、项目配置步骤​1