Pyinstaller+Pipenv打包Python文件成exe or 满分率计算
本文最后更新于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()

 

如果这篇文章对您有所帮助,不妨打赏一下作者吧~
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇