使用pyinstaller打包python生成exe 解决FileNotFound ModuleNotFound 依赖文件打包问题

第一步 下载pyinstaller

在pycharm的setting中添加pyinstaller:
在这里插入图片描述

第二步 打包python文件

执行指令:pyinstaller -F xxx.py(-F的话只在dist文件夹中生成一个exe文件,-D的话会在dist文件夹中生成一个xxx的文件夹,此处只需要一个exe)
在这里插入图片描述

解决各种踩坑问题

遇到的第一种报错是:打包成功后,运行.exe报错: ModuleNotFoundError: No module named ’numpy.core.__dtype_ctypes’

解决办法:在生成的之前打包生成的spec文件中hiddenimports处添加缺失的module:
在这里插入图片描述之后出现各种module找不到的错误都在此处添加module的名称,然后执行pyinstaller xxx.spec,重新生成新的exe

遇到的第二种报错:FileNotFoundError: [Errno 2] No such file or directory: ‘C:\Users\alice\AppData\Local\Temp\_MEI90682\smart_open\VERSION’

遇到这个问题首先要找到pyinstaller安装目录下的hooks文件夹,我的安装目录是:C:\Users\alice\AppData\Local\Programs\Python\Python37\Lib\site-packages\PyInstaller\hooks,里面有各种第三方配置文件的hook-xxx.py文件:
在这里插入图片描述解决问题就是自己写个hook,然后放进pyinstaller的hooks里面即可:
新建python文件,将文件命名为hook-xxx.py(其中xxx为刚刚报错中找不到的目录,例如我的是smart_open),打开hook-smart_open.py,在其中添加代码:

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

在这里插入图片描述完成添加工作,需要重新执行一遍pyinstaller -F xxx.py才能看到效果

遇到的第三种报错:找不到python文件依赖的txt数据集

解决方法是:将依赖的数据集放到exe所在文件的目录中,例如这样:
在这里插入图片描述但注意源代码中的引用数据集处的路径要做出相应的修改,此处的话数据集的路径直接就是:
在这里插入图片描述如果是其他相对路径的话会找不到数据集所在地方。执行exe文件,可以跑通。

运行exe结果如下:
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值