懒人教程:从Python到exe让你的程序一键“变身”

懒人教程:从Python到exe让你的程序一键“变身”

前言

​  在写代码的过程中我们常常会遇到问题,在与他人分享自己编写的Python程序时,却面临一个问题:如何让没有安装Python环境的用户也能轻松运行程序呢?,今天我要给大家介绍一种非常方便的方法,可以将Python文件打包成可执行的exe文件。你不用担心用户是否安装了Python环境,只需要一个点击,你的程序就能在任何Windows电脑上运行了!,当然在进行文件打包时,我们总会遇到很多问题,例如某模块未打包进入文件,导致exe文件无法使用,接下来,我会一点一点进行解决

​  此工具我会出一个专栏,这是工具1.0版本的,只能打包,只包含基础库的py文件,后续会一步步优化,包含自定义打包文件的小图标文件名,将音乐其他第三方库模块进行打包。注意,最终为一个GUI工具
敲代码
思维导图

一,pyinstaller库的安装

 我们需要用到一个名为pyinstaller的库。它是一个非常流行的Python库,可以将Python文件转换为可执行文件。如果你还没有安装它,可以在命令行中使用以下命令进行安装:

代码入下:
pip install pyinstaller

二,导入所需的库

​  这里我将导入的库的作用使用注释写出

import tkinter as tk # 导入tkinter库作为tk的别名。用于创建GUI界面和处理用户交互。
from tkinter import filedialog, messagebox 
# 导入tkinter库中的filedialog和messagebox模块。用于打开文件对话框和显示消息框。
from PIL import ImageTk, Image # 导入PIL库中的ImageTk和Image模块。用于加载、显示和处理图像。
import subprocess # 导入subprocess库。用于执行外部命令
import os # 导入os库,用于处理操作系统相关的功能,对文件的操作。

三,主函数

要想制作一个界面GUI应用,首先从一个创建一个窗口开始。

1.创建窗口

​  我们首先创建一个主窗口,并设置窗口的标题和尺寸

代码入下:
def main():
    # 创建主窗口
    window = tk.Tk()
    window.title("作者--内心如初")

    # 设置窗口尺寸
    window.geometry("500x300")

2.创建背景图片

​  窗口创建好后。接下来,,当然因人而异,光秃秃的界面,强迫证的我难以接受!
空白窗口

 我们需要加载一张背景图片,并将其设置为窗口的背景。你可以替换图片路径以获得你喜欢的背景效果

代码入下:
    # 加载背景图片
    image_path = 'C:\\Users\\86199\\Desktop\\假期学习\\python库学习\\python打包软件项目\\软件背     景.png'                         # 替换为你的背景图片路径,这里我使用的是绝对路径
    image = Image.open(image_path)  # 将图片使用open函数打开,当然也可以将图片路径直接写入括号
    background_image = ImageTk.PhotoImage(image) # 将image参数传入

    # 创建背景图片的标签并添加到窗口
    background_label = tk.Label(window, image=background_image)
    # 设置背景图片标签的位置和尺寸,使其铺满整个窗口
    background_label.place(x=0, y=0, relwidth=1, relheight=1)

有背景的窗口

3.创建转化按钮

​  增加图片背景后,我们需要创建两个按钮。一个用于选择要打包的Python文件,另一个用于执行转换为exe文件的操作。

代码入下:
    # 创建选择文件按钮
    select_button = tk.Button(window, text="选择要打包的文件", command=select_file)
    # 创建了一个按钮 select_button,按钮上显示文本为 “选择要打包的文件”,并绑定了一个命令               # select_file,即当按钮被点击时会执行 select_file 函数。
    select_button.pack(pady=20)
    # select_button 使用了 pack 方法来将按钮放置在窗口中,并设置 pady 参数来增加垂直间距。
    # 通俗来说就是两个按钮之间的垂直距离
      
    # 创建转为exe按钮
    exe_button = tk.Button(window, text="转为exe文件", command=convert_to_exe)
    # 创建了一个按钮 exe_button,按钮上显示文本为 “转为exe文件”,并绑定了一个命令 
    # convert_to_exe,即当按钮被点击时会执行 convert_to_exe 函数。
    exe_button.pack(pady=10)
    # 这个和上面一样,我就不多说了
    # 启动主循环
    window.mainloop()
    # 启动了窗口的主事件循环,使窗口能够响应用户的交互操作。窗口会一直运行,直到关闭窗口。
    
    # 上述绑定的命令,其实为两个函数,会在后面进行讲解

含有按钮

四,select_file()函数

​  我们需要定义一些功能函数。首先是select_file()函数,用于弹出文件选择对话框并保存选择的文件路径。

代码入下:
def select_file():
    # 弹出文件选择对话框
    file_path = filedialog.askopenfilename(filetypes=[("Python Files", "*.py")])
    # filedialog.askopenfilename 是一个弹出文件选择对话框的函数,它可以让用户选择一个文件。             # filetypes 参数是一个列表,用于指定允许选择的文件类型,这里设置为仅允许选择扩展名为 .py 的文件。
    
    if file_path:
        # 保存选择的文件路径
        global selected_file
        selected_file = file_path
        # 如果 file_path 不为空,即用户选择了一个文件,则将选择的文件路径保存到全局变量 
        # selected_file 中。使用 global 关键字声明 selected_file 为全局变量,使其在全局使用
        
        # 提示选择完成
        file_name = os.path.basename(file_path)
        messagebox.showinfo("提示", f"已选择文件:{file_name}")
        # 使用 os.path.basename 获取选择文件的文件名
        # 使用 messagebox.showinfo 弹出一个信息对话框,显示选择的文件名。
        # 使用字符串字面值 “提示” 作为对话框标题,使用 f-string 将文件名插入到对话框的消息文本中。

实现功能

五,convert_to_exe()函数

代码入下:
def convert_to_exe():
    try:
        # 检查是否选择了文件
        if not selected_file:
            messagebox.showwarning("警告", "请先选择要打包的文件!")
            return
        # 检查了一个名为 selected_file 的全局变量是否为空。
        # 如果没有选择文件(selected_file 为空),则弹出一个警告框,显示提示消息 “请先选择要打包的文             件!”。
        # 返回语句会终止函数的执行。
        
        # 执行转换为exe文件命令
        pyinstaller_command = f"pyinstaller --onefile {selected_file}"
        # 存储打包的外部命令
        subprocess.call(pyinstaller_command, shell=True)
        # 使用 subprocess.call 函数来执行转换为 .exe 文件的命令。在这里,我们使用了 pyinstaller 命           令行工具来进行转换。
        # --onefile 参数表示将应用程序打包成一个独立的 .exe 文件。
        # selected_file 包含我们选择的要打包的 Python 文件的路径

        # 提示转换完成
        file_name = os.path.basename(selected_file)
        messagebox.showinfo("提示", f"{file_name} 已转换为exe文件!")
        # os.path.basename 函数用于获取选择文件的文件名。
        # 用于在转换完成后,弹出一个提示消息框,显示文件已经成功转换为 .exe 文件的提示消息。      
       
    except Exception as e:
        # 异常处理
        messagebox.showerror("错误", str(e))
        # 在 try 块中,我们使用了 Exception 作为通用的异常处理器,捕获可能出现的任何异常。
        # 如果出现异常,将会显示一个错误对话框,显示异常的消息。

转为exe文件

六,运行程序

​  在主程序的末尾,我们需要添加这两行代码来初始化全局变量selected_file并调用main()函数

代码入下:
if __name__ == "__main__":
    # 全局变量
    selected_file = None

    main()

七,完整代码

代码入下:
import tkinter as tk
from tkinter import filedialog, messagebox
from PIL import ImageTk, Image
import subprocess
import os


def main():
    # 创建主窗口
    window = tk.Tk()
    window.title("作者--内心如初")

    # 设置窗口尺寸
    window.geometry("500x300")

    # 加载背景图片
    image_path = 'C:\\Users\\86199\\Desktop\\假期学习\\python库学习\\python打包软件项目\\软件背景.png'  # 替换为你的背景图片路径
    image = Image.open(image_path)
    background_image = ImageTk.PhotoImage(image)

    # 创建背景图片的标签并添加到窗口
    background_label = tk.Label(window, image=background_image)
    background_label.place(x=0, y=0, relwidth=1, relheight=1)

    # 创建选择文件按钮
    select_button = tk.Button(window, text="选择要打包的文件", command=select_file)
    select_button.pack(pady=20)

    # 创建转为exe按钮
    exe_button = tk.Button(window, text="转为exe文件", command=convert_to_exe)
    exe_button.pack(pady=10)

    # 启动主循环
    window.mainloop()


def select_file():
    # 弹出文件选择对话框
    file_path = filedialog.askopenfilename(filetypes=[("Python Files", "*.py")])

    if file_path:
        # 保存选择的文件路径
        global selected_file
        selected_file = file_path

        # 提示选择完成
        file_name = os.path.basename(file_path)
        messagebox.showinfo("提示", f"已选择文件:{file_name}")


def convert_to_exe():
    try:
        # 检查是否选择了文件
        if not selected_file:
            messagebox.showwarning("警告", "请先选择要打包的文件!")
            return

        # 执行转换为exe文件命令
        pyinstaller_command = f"pyinstaller --onefile {selected_file}"
        subprocess.call(pyinstaller_command, shell=True)

        # 提示转换完成
        file_name = os.path.basename(selected_file)
        messagebox.showinfo("提示", f"{file_name} 已转换为exe文件!")

    except Exception as e:
        # 异常处理
        messagebox.showerror("错误", str(e))


if __name__ == "__main__":
    # 全局变量
    selected_file = None

    main()

能用就行

八,注意事项

​  选择py文件后,点击转为exe,等待转化完后会有提示当然和文件大小有关,打包速度也会变化,目前只能打包基础库的部分,包含部分库可以直接打包。

​  后续,我会一点一点制作可以解决打包中出现的各种问题的工具。

九,打包实现(不要走开这部分有我制作的三个有用的工具)

​  注意这里的工具都为调用免费的api接口返回的数据,会出现请求频繁的情况,注意使用频率,正常使用是OK的

1.返回随机壁纸

命令行
返回的图片
 图片是将上述工具中返回的链接,在浏览器最上面的填写url的地方输入后会显示图片

2.百度翻译脚本

翻译图片

3.随机一言

随机一言

十.总结

​  对与本次工具的实现,其实说多了就是为了偷懒,不然也不会做这个,当我看到,其他人制作的工具都需要收费下载时,我的内心是抵触的,所以我就自制了。相信在我的完善下,这个工具的使用会更好的满足大家的需求,当然也包括我。

 如果本篇文章对你有帮助的话,不妨收藏点赞收藏加关注哦!!!

给个三连

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XError_xiaoyu

你的支持,使我更好的创作

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值