当前位置: 首页 > news >正文

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

相关文章:

  • 科技云报道:推进工业新质生产力机器人有望成为AI下一个新引擎?
  • 如何制作 PDF 文件
  • 测速小车模块
  • C++ 类与对象的使用要点(超详细解析,小白必看系列)
  • 昇思大模型学习·第一天
  • TDesign环境搭建-后台模板的安装和使用-构建web管理端后台系统
  • upload-labs第十三关教程
  • 微信小程序地图功能详解
  • N32G031时钟配置
  • 《Unity3D高级编程之进阶主程》第一章 C#要点技术(二) - Dictionary 底层源码剖析
  • 【LeetCode 动态规划】买卖股票的最佳时机问题合集
  • 坚持刷题|反转链表
  • 专业技能篇--算法
  • Es 索引查询排序分析
  • Cocos Creator,Youtube 小游戏!
  • 【译】JS基础算法脚本:字符串结尾
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 5、React组件事件详解
  • css属性的继承、初识值、计算值、当前值、应用值
  •  D - 粉碎叛乱F - 其他起义
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • js ES6 求数组的交集,并集,还有差集
  • leetcode46 Permutation 排列组合
  • pdf文件如何在线转换为jpg图片
  • React-Native - 收藏集 - 掘金
  • win10下安装mysql5.7
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 对JS继承的一点思考
  • 聊一聊前端的监控
  • 爬虫模拟登陆 SegmentFault
  • 使用docker-compose进行多节点部署
  • 用jquery写贪吃蛇
  • Spring第一个helloWorld
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​学习笔记——动态路由——IS-IS中间系统到中间系统(报文/TLV)​
  • # 移动硬盘误操作制作为启动盘数据恢复问题
  • $refs 、$nextTic、动态组件、name的使用
  • (10)ATF MMU转换表
  • (11)MSP430F5529 定时器B
  • (19)夹钳(用于送货)
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (5)STL算法之复制
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (CPU/GPU)粒子继承贴图颜色发射
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (八)Flask之app.route装饰器函数的参数
  • (第61天)多租户架构(CDB/PDB)
  • (回溯) LeetCode 131. 分割回文串
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (四)JPA - JQPL 实现增删改查
  • (四)进入MySQL 【事务】
  • (五)activiti-modeler 编辑器初步优化
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • .NET MVC之AOP
  • .Net6使用WebSocket与前端进行通信