在Pyinstaller中包含excel文件和程序

2024-10-03 23:26:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python编写了代码,打开了一个模板excel文件。每天午夜,它都会将模板复制到一个新的excel文件中,代码会在其中记录当天的数据。我的目标是使用pyinstaller创建一个包含我的代码和模板excel文件的可执行文件

基本上,我希望通过将excel文件捆绑到从pyinstaller获得的exe文件中,能够打开模板excel文件,而不管计算机是否包含该文件:

现在我打开excel文件,如下所示:

import os
import openpyxl

theFile = openpyxl.load_workbook(os.getcwd()+"\templateExcel.xlsx")
currentSheet = theFile[theFile.sheetnames[0]]

但是,当我将excel文件作为--add-data "templateExcel.xlsx;templateExcel.xlsx包含到pyinstaller命令中并运行exe文件时,它无法检测templateExcel文件的位置。我知道,通过在不同的计算机上运行,os.getcwd()提供了不同的路径,因此它显然无法打开excel文件。因此,我需要一种方法将excel文件捆绑到exe文件中,这样python代码就可以在任何计算机上都能找到它


Tags: 文件代码import模板os计算机记录xlsx
2条回答

你可以使用; Adding a data file in Pyinstaller using the onefile option
概括地说:

pyinstaller  onefile  nowindow  add-data text.txt;included winprint.py  distpath .

和示例python脚本:

import os 
import sys

os.chdir(sys._MEIPASS)
os.system('included\\text.txt')

请注意: 使用“getcwd()”时,您将不会收到所需的结果,它将为您提供执行exe文件的位置

例如,查看以下长模块:

from os import getcwd
print(getcwd())

如果从不同的位置执行,将得到不同的结果: enter image description here

如果PyInstaller像您假设的那样工作(相对于某个模块放置文件),您可以使用file而不是getcwd(),因为它指示模块所在的位置(该位置是常量,与执行exe的位置不同),但它不是

不管怎样,@Sezer-BOZKIR的回答应该足够了,请注意我在那里添加的评论

相关问题 更多 >