需要打包的代码中用到了pandas读取excel表,然后生成的exe会显示报错缺乏依赖项‘openpyxl’,但实际上在虚拟环境中已经安装了openpyxl,根据网上的说法,进行了以下尝试:
1.重装openpyxl;
2.在hiddenimports添加openpyxl (不管是直接pyinstaller py 还是在spec中进行添加);
3.在主函数的同目录添加一个文件夹用来保存从源环境复制过来的openpyxl脚本,并在pyinstaller 中 -p添加路径
这三者都没有作用。
为解决该问题,从两个角度出发进行了剖析,第一个方法,直接使用openpyxl读取数据,用来判断是否是openpyxl存在,但存在缺陷,根据实验结果,证明确实如此。
root_dir = os.getcwd()
dataSet = []
wb = load_workbook(root_dir+path)
ws = wb.worksheets[id]
data_list = []
# 逐行读取数据,并将每行数据添加到二维列表中
for row in ws.iter_rows(min_row=2, values_only=True):
data_list.append(list(row))
使用上述代码,打包好的exe报错"openpyxl.cell._writer",通过这个可以判断应该是这个导致的,重新在hiddenimports中添加"openpyxl.cell._writer"即可解决该问题,注意这里要是添加openpyxl