将Py转为exe文件

简介: 今天我要给大家介绍一种非常方便的方法,可以将Python文件打包成可执行的exe文件。你不用担心用户是否安装了Python环境,只需要一个点击,你的程序就能在任何Windows电脑上运行了!,当然在进行文件打包时,我们总会遇到很多问题,例如某模块未打包进入文件,导致exe文件无法使用,接下来,我会一点一点进行解决.此工具我会出一个专栏,这是工具1.0版本的,只能打包,只包含基础库的py文件,后续会一步步优化,包含自定义打包文件的小图标,文件名,将音乐或其他第三方库模块进行打包。注意,最终为一个GUI工具

前言

版权声明:本文为本博主在CSDN的原创文章搬运而来,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文首发链接:https://blog.csdn.net/weixin_72543266/article/details/132265386


 在写代码的过程中我们常常会遇到问题,在与他人分享自己编写的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 作为通用的异常处理器,捕获可能出现的任何异常。
        # 如果出现异常,将会显示一个错误对话框,显示异常的消息。

六,运行程序

 在主程序的末尾,我们需要添加这两行代码来初始化全局变量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.随机一言

十.总结

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


相关文章
|
1月前
|
JSON 安全 前端开发
使用Gradio显示 System32文件夹下的DLL文件说明
使用Gradio显示 System32文件夹下的DLL文件说明3. 编写 Gradio 应用程序代码 接下来,我们将编写一个 Python 脚本,使用 Gradio 创建一个界面。在这个界面中,我们将定义一个函数来格式化和返回 DLL 文件信息,并通过 Gradio 显示它。 以下是完整的代码示例: import gradio as gr # 要展示的文件说明 data = { "System32下的文件说明": [ {"name": "aclui.dll", "remark": "Security Descriptor Editor,没有它,注册表编缉器会无法运
|
1月前
|
存储 机器学习/深度学习 数据可视化
解析exe文件
如何使用`objdump`工具解析exe文件,包括exe文件的组成、`objdump`的用法以及如何查看exe文件的节头信息和完整内容。
66 0
解析exe文件
|
3月前
|
移动开发 Java 编译器
什么是pyc文件,把python的py文件编译成pyc文件,把pyc文件反编译成py文件。以及python编译的如何设置不生成pyc文件
什么是pyc文件,把python的py文件编译成pyc文件,把pyc文件反编译成py文件。以及python编译的如何设置不生成pyc文件
50 1
|
3月前
|
区块链 Python
Python脚本打包 exe,auto-py-to-exe来帮你!
Python脚本打包 exe,auto-py-to-exe来帮你!
|
3月前
|
开发者 Python
.py 和 .pyc 文件有什么区别?
【8月更文挑战第29天】
246 0
|
5月前
|
Python
使用pyinstall将.py文件打包可执行文件.exe
使用pyinstall将.py文件打包可执行文件.exe
|
Python
py文件转exe文件
py文件转exe文件
108 0
|
小程序 Linux Python
python文件转为可执行文件(.exe)的详细步骤
python文件转为可执行文件(.exe)的详细步骤
|
Python
python-------pyinstaller打包pygame游戏或单个、多个.py文件成.exe文件
python-------pyinstaller打包pygame游戏或单个、多个.py文件成.exe文件
864 0
python-------pyinstaller打包pygame游戏或单个、多个.py文件成.exe文件
|
安全 C++ Python
打包py文件为exe应用详细讲解
打包py文件为exe应用详细讲解
138 0
打包py文件为exe应用详细讲解