吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9279|回复: 88
收起左侧

[原创工具] python打包工具

    [复制链接]
爱月亮的胡萝卜 发表于 2023-4-15 13:23
本帖最后由 爱月亮的胡萝卜 于 2023-4-15 13:39 编辑

将python程序文件打包成exe文件的工具
代码如下:
[Python] 纯文本查看 复制代码
import subprocess
import tkinter as tk
from tkinter import filedialog
from tkinter import messagebox

class Application(tk.Frame):
    def __init__(self, master=None):
        super().__init__(master)
        self.master = master
        self.master.title("Python打包工具")
        self.pack()
        self.create_widgets()

    def create_widgets(self):
        # 创建一个标签和一个按钮
        self.filename_label = tk.Label(self, text="请选择Python程序:")
        self.filename_label.pack()
        self.select_button = tk.Button(self, text="选择文件", command=self.select_file)
        self.select_button.pack()

        # 创建一个按钮,单击它将运行命令
        self.convert_button = tk.Button(self, text="转换为exe", command=self.convert_to_exe, state=tk.DISABLED)
        self.convert_button.pack()

        # 创建一个文本框,用于显示输出
        self.output_text = tk.Text(self)
        self.output_text.pack()

    def select_file(self):
        # 打开文件选择对话框
        file_path = filedialog.askopenfilename()

        # 如果用户选择了文件,则启用转换按钮并更新文件名标签的文本
        if file_path:
            self.filename_label.config(text=f"已选择的文件:{file_path}")
            self.selected_file = file_path
            self.convert_button.config(state=tk.NORMAL)

    def convert_to_exe(self):
        # 获取已选择的Python程序的路径
        filename = self.selected_file

        # 构造命令
        command = f"pyinstaller --onefile {filename}"

        # 运行命令
        process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)

        # 获取输出
        stdout, stderr = process.communicate()

        # 在文本框中显示输出
        self.output_text.delete("1.0", tk.END)
        self.output_text.insert(tk.END, stdout.decode())
        self.output_text.insert(tk.END, stderr.decode())

        # 根据转换结果弹出消息框
        if process.returncode == 0:
            messagebox.showinfo("提示", "转换成功!")
        else:
            messagebox.showerror("错误", "转换失败!")

def main():
    root = tk.Tk()
    app = Application(master=root)
    app.mainloop()

if __name__ == "__main__":
    main()

软件截图:
使用过程:选择python程序文件,点击转换成exe。
注意事项:生成的exe文件在该软件或程序的文件夹dist中。
链接:https://pan.baidu.com/s/1DX9eoGDchOosCijtUlbOiQ      提取码:52pj



免费评分

参与人数 9吾爱币 +9 热心值 +9 收起 理由
zxc0011 + 1 + 1 我很赞同!
Desyunyan + 1 + 1 热心回复!
临渊行 + 1 + 1 用心讨论,共获提升!
notifier + 1 + 1 谢谢@Thanks!
wj919800373 + 1 + 1 谢谢@Thanks!
jackAqwq + 1 + 1 谢谢@Thanks!
diwuc + 1 + 1 我很赞同!
JNTM123 + 1 + 1 我很赞同!
xyling1007 + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

jidesheng6 发表于 2023-4-15 21:23
这是给pyinstaller封装了个界面吧
 楼主| 爱月亮的胡萝卜 发表于 2023-4-16 15:22
本帖最后由 爱月亮的胡萝卜 于 2023-4-16 15:25 编辑
ysjd22 发表于 2023-4-16 10:58
File "e:\py_importent_code\py2exe.py", line 61, in convert_to_exe
    self.output_text.insert(tk. ...

这个错误的原因是在转换过程中的错误信息包含了非 utf-8 编码的字符,导致在插入输出文本框时无法进行解码。
尝试将 stderr 的解码方式从 utf-8 改为 ignore,这样在解码时遇到非法字符时就会自动忽略。
请尝试将部分代码替换为下面内容。
[Python] 纯文本查看 复制代码
def convert_to_exe(self):
    # 获取已选择的Python程序的路径
    filename = self.selected_file

    # 构造命令
    command = f"pyinstaller --onefile {filename}"

    # 运行命令
    process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)

    # 获取输出
    stdout, stderr = process.communicate()

    # 在文本框中显示输出
    self.output_text.delete("1.0", tk.END)
    self.output_text.insert(tk.END, stdout.decode())
    self.output_text.insert(tk.END, stderr.decode(errors='ignore'))

    # 根据转换结果弹出消息框
    if process.returncode == 0:
        messagebox.showinfo("提示", "转换成功!")
    else:
        messagebox.showerror("错误", "转换失败!")
 楼主| 爱月亮的胡萝卜 发表于 2023-4-15 21:40
jidesheng6 发表于 2023-4-15 21:23
这是给pyinstaller封装了个界面吧

可以这么理解,这样操作以后打包软件不久更方便了嘛
whele 发表于 2023-4-15 22:25
看了一下代码,不支持加图标呀
pjy612 发表于 2023-4-15 23:18
看代码 核心就一条命令吗...
 楼主| 爱月亮的胡萝卜 发表于 2023-4-15 23:41
pjy612 发表于 2023-4-15 23:18
看代码 核心就一条命令吗...

代码主要是思路,思路清晰了就慢慢堆屎山。
头像被屏蔽
ebaqiang 发表于 2023-4-16 00:46
提示: 作者被禁止或删除 内容自动屏蔽
pentium 发表于 2023-4-16 07:49
加个应用程序图标吧,锦上添花。
jsdhmqh 发表于 2023-4-16 08:34
先收藏了,等后用!
halloseven 发表于 2023-4-16 08:48
感谢楼主分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-23 21:11

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表