想把python代码打包为exe程序?只要三步就能搞定啦

本文介绍了如何使用PyInstaller将Python项目打包成exe程序,包括环境安装、案例演示和常用参数说明。通过pip安装PyInstaller,然后针对一个坦克大战游戏的Python项目进行打包操作,详细讲解了-D、-F、-n和-i等参数的使用,帮助开发者将程序打包成独立的可执行文件。

最近有部分小伙伴问我,python 写的项目可不可以打包成 exe 程序,放到没有 python 环境上的电脑中执行?

答案当然是可以的。python 有一个叫做 pyinstaller 的第三方库,是专门用来将 python 程序打包 exe 程序的。

今天就专门给大家分享一下如何进行打包,使用之前需要大家先使用 pip 进行安装。

环境安装 安装命令:pip install pyinstaller

如果安装失败,网络超时什么的记得换国内源

案例演示

1、项目源码

这边给大家演示的项目是之前做教研的的时候,用 python 面向对象的知识和 pygame,写的一个坦克大战的游戏,整个项目的代码结构及运行效果如下:

2、打包命令

要将上面的 python 项目打包为 exe 程序,这个时候要找到项目的启动文件(项目的入口文件),通过 pyinstaller 加上启动文件的名字,就可以对项目进行打包,如下:

cmd 中先切换到项目目录下 上面的项目启动文件时 tank.py,输入打包命令:

执行完之后,正在项目目录中会生成如下文件:

· build:存放打包过程中生产的临时文件

· dist: 打包之后的项目文件包括 exe 程序都在这里

· t

### 使用Python将音频和图像资源嵌入并生单个EXE文件 为了实现这一目标,可以采用`PyInstaller`工具来打包Python应用程序及其依赖项独立的可执行文件。对于静态资源如音乐和图片,则可以通过特定的方式将其集到最终的应用程序中。 #### 准备工作 确保已经安装了最新版的Python环境[^1]。接着,在命令行界面通过pip安装必要的库: ```bash pip install pyinstaller pillow soundfile ``` 这里使用到了Pillow用于处理图像,而SoundFile则用来管理声音文件。 #### 将资源转换为字节串形式 一种常见的做法是先读取这些多媒体文件的内容作为二进制数据流保存下来,并在运行时再加载出来恢复原貌。下面给出一段简单的例子展示怎样把一张PNG格式的照片以及WAV格式的声音编码为base64字符串存储起来: ```python import base64 def encode_file_to_base64(file_path): with open(file_path, "rb") as file: encoded_string = base64.b64encode(file.read()).decode('utf-8') return f"data:image/png;base64,{encoded_string}" if file_path.endswith('.png') \ else f"data:audio/wav;base64,{encoded_string}" ``` 此函数能够接受任意类型的文件路径参数,并返回相应的Base64编码后的URL字符串表示法。 #### 创建GUI应用框架 假设要创建一个带有按钮的小窗口,点击之后会播放指定曲目并且显示对应的封面画作。那么可以借助tkinter模块快速搭建起这样的交互界面: ```python from tkinter import Tk, Button, Label from PIL import ImageTk, Image import io import base64 import sounddevice as sd import numpy as np from scipy.io.wavfile import read class App(Tk): def __init__(self, image_data, audio_data): super().__init__() self.title("Media Player") # Decode and display the image from Base64 string. img_bytes = base64.b64decode(image_data.split(',')[1]) pil_image = Image.open(io.BytesIO(img_bytes)) tk_img = ImageTk.PhotoImage(pil_image) label = Label(self, image=tk_img) label.image = tk_img # Keep a reference to avoid garbage collection issues. label.pack() play_button = Button( text="Play Music", command=lambda: self.play_audio(audio_data), width=20, height=3 ) play_button.pack() @staticmethod def play_audio(base64_str): sample_rate, data = read(io.BytesIO(base64.b64decode(base64_str.split(',')[1]))) duration_seconds = len(data)/sample_rate try: sd.play(np.array(data), samplerate=int(sample_rate)) sd.wait(duration_seconds) except Exception as e: print(f"Error playing audio: {e}") ``` 这段代码定义了一个继承自Tk类的新App类,它接收两个初始化参数——分别是之前提到过的经过编码处理过后的图像与音轨资料;内部实现了当用户按下“Play Music”按键后触发调用play_audio()方法的功能逻辑。 #### 打包项目 最后一步就是利用PyInstaller完整个工程的一键封装流程啦! 编写main.py脚本来启动上述设计好的图形化组件: ```python if __name__ == '__main__': app = App(IMAGE_BASE64_STRING, AUDIO_BASE64_STRING) app.mainloop() ``` 请注意替换掉这里的占位符变量名(即 IMAGE_BASE64_STRING 和 AUDIO_BASE64_STRING)为你实际拥有的媒体素材所对应的那个独一无二的身份标识码哦~ 随后只需一条指令即可搞定一切后续事宜: ```bash pyinstaller --onefile main.py ``` 这将会自动收集所有必需品并将它们压缩至单一的目标位置下形名为dist/main.exe的结果产物。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值