Python pyinstaller打包成exe文件后执行失败FileNotFoundError

在这里插入图片描述

在用pyinstaller打包(-F 选项),如果用到的第三方库含有data文件,而pyinstaller又没有自带该第三方库文件的hook的时候,执行打包后的exe一般会报以下错误

FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\1\\_MEI54762\\jieba\\dict.txt'
[20784] Failed to execute script bat_server

上面就是没把python库jieba的dict.txt打包进来,导致了错误。

那么,解决问题也很简单,自己写个hook,然后放进pyinstaller的hooks里面即可。

hook文件的命名规范为: hook-【库名】.py,以结巴分词为例,即为hook-jieba.py,然后简单敲入以下两行:

from PyInstaller.utils.hooks import collect_data_files
 
datas = collect_data_files("jieba")

 接下来,找到pyinstaller的hooks文件夹,大概位于:

python根目录\Lib\site-packages\PyInstaller\hooks下,然后把hook-jieba.py丢进去,如下图所示:

hook

最后,回到项目根目录,用pyinstaller打包即可。(注意可能需要把build目录删了,使pyinstaller从头开始打包)

当看到pyinstaller的日志里使用了我们自定义的hook后,就万事大吉了。

 

ok

PS:打包tushare的时候也有类似问题,下次可以直接用此法解决。 

  • 12
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值