本文最后更新于169 天前,其中的信息可能已经过时,请自行注意文章有效性。
直接在conda环境中使用pyinstaller打包时会导致exe文件超大,本次在新建conda环境中打包pandas库最后内存600多MB,而使用该方法仅有22MB,非常好用,在此插眼。
——————————————————-more—————————————————–
可恶,打包完的exe文件点开报错,现寻找解决办法中!
Pyinstaller+Pipenv打包Python文件,简直不要太香~_pyinstaller pipenv-CSDN博客
——————————————————-more—————————————————–
不知道为什么直接新建conda环境打包又可以运行了,最后打包后是30MB左右大小……
程序源码
//计算满分率的小程序 import tkinter as tk from tkinter import filedialog, messagebox import pandas as pd class GradeApp: def __init__(self, master): self.master = master self.master.title("学生成绩满分率计算器") # 导入Excel文件按钮 self.load_button = tk.Button(master, text="导入Excel文件", command=self.load_excel) self.load_button.pack() # 运行计算满分率程序按钮 self.run_button = tk.Button(master, text="计算满分率", command=self.calculate_full_score_rate, state=tk.DISABLED) self.run_button.pack() # 导出Excel文件按钮 self.export_button = tk.Button(master, text="导出Excel文件", command=self.export_excel, state=tk.DISABLED) self.export_button.pack() self.df = None # 存储DataFrame数据 self.file_path = None # 存储文件路径 def load_excel(self): self.file_path = filedialog.askopenfilename(filetypes=[("Excel files", "*.xlsx *.xls")]) if self.file_path: try: self.df = pd.read_excel(self.file_path) if not self.df.empty: self.run_button.config(state=tk.NORMAL) messagebox.showinfo("信息", "文件导入成功!") else: messagebox.showwarning("警告", "导入的Excel文件为空,请选择包含学生成绩数据的文件!") except Exception as e: messagebox.showerror("错误", f"文件导入失败:{e}") else: messagebox.showerror("错误", "未选择文件!") def calculate_full_score_rate(self): if self.df is not None and not self.df.empty: try: max_scores = self.df.iloc[-1][2:] # 满分行数据 student_data = self.df[:-1] # 排除满分行的学生数据 full_score_rates = student_data.iloc[:, 2:].eq(max_scores).sum(axis=1) / len(max_scores) full_score_rates *= 100 # 将满分率转换为百分比 full_score_rates = round(full_score_rates, 2) # 保留两位小数 student_data['满分率(%)'] = full_score_rates.astype(str) + '%' # 添加百分号并转换为字符串 self.df = student_data # 更新DataFrame以包含满分率 self.export_button.config(state=tk.NORMAL) messagebox.showinfo("信息", "满分率计算完成!") except Exception as e: messagebox.showerror("错误", f"满分率计算失败:{e}") else: messagebox.showerror("错误", "没有加载的数据文件或数据为空!") def export_excel(self): if self.df is not None and not self.df.empty: try: save_path = filedialog.asksaveasfilename(filetypes=[("Excel files", "*.xlsx *.xls")]) if save_path: self.df.to_excel(save_path, index=False, engine='xlsxwriter') # 指定引擎为xlsxwriter messagebox.showinfo("信息", "文件已成功导出到:" + save_path) else: messagebox.showwarning("警告", "未选择保存文件的位置!") except Exception as e: messagebox.showerror("错误", f"文件导出失败:{e}") else: messagebox.showwarning("警告", "没有要导出的数据!") if __name__ == "__main__": root = tk.Tk() app = GradeApp(root) root.mainloop()