当前位置: 首页 > news >正文

Python之PyInstaller打包EXE程序(带音乐加图片等资源)

Python之PyInstaller打包EXE程序(带音乐加图片等资源)

要将你的 Python 程序打包成一个可执行文件(.exe),并确保图片和音乐文件包含在其中,你可以使用 PyInstaller 工具。下面是一个简单的步骤来打包你的程序:

在这里插入图片描述

以我的文件夹中要打包程序为例

  • favicon.ico 程序图标
  • giphy1.gif 背景图片
  • Ryan Gosling,Emma Stone - City Of Stars.flac 背景音乐文件
  • 小程序.py 程序源码

1. 安装 PyInstaller

首先,你需要确保安装了 PyInstaller。你可以通过以下命令来安装:

pip install pyinstaller

2. 确保文件路径正确

首先确保首先,请确保你的资源文件 giphy1.gif 和音频文件都在与你的脚本文件 (.py) 同一个目录下。如果不是,请将它们移动到同一个目录。其次保证py代码中图片和音乐加载调用使用的绝对路径。

如果不是,可以使用以下代码修改来修改调用

import os
import sysdef resource_path(relative_path):"""获取资源文件的绝对路径"""try:# PyInstaller 创建了一个临时文件夹,存放已打包的文件base_path = sys._MEIPASSexcept Exception:base_path = os.path.abspath(".")return os.path.join(base_path, relative_path)# 然后在加载资源时使用这个函数:
image_path = resource_path("giphy1.gif")
audio_path = resource_path("Ryan Gosling,Emma Stone - City Of Stars.flac")# 更新你的代码以使用这些路径:
image = Image.open(image_path)
pygame.mixer.music.load(audio_path)

3. 打包程序

打包时的注意事项:在运行 PyInstaller 命令前,确保你的代码已经使用了 resource_path 函数来加载资源文件。这样,在打包为 .exe 时,资源文件路径会被正确解析,确保程序在运行时能够找到这些资源。

否则可能会打包后会出现FileNotFoundError: [Errno 2] No such file or directory: 'giphy1.gif'相关文件不存在报错,说明路径解析不正确。

打包程序命令如下:

pyinstaller -F --noconsole -i favicon.ico your_script.py --add-data="giphy1.gif;." --add-data="Ryan Gosling,Emma Stone - City Of Stars.flac;."
  • --onefile:命令等效于-F,将所有文件打包成一个单独的可执行文件。
  • --noconsole: 命令等效于-w,用于GUI应用程序,不显示控制台窗口。
  • -i: 为生成的exe文件添加一个图标。
  • --add-data "giphy1.gif;.":添加 giphy1.gif 文件到打包的可执行文件中。.;. 表示将文件添加到可执行文件的根目录中。
  • --add-data "Ryan Gosling,Emma Stone - City Of Stars.flac;.":添加音频文件到打包的可执行文件中。
  • your_script.py:替换为你 Python 脚本的名称。

打包程序命令在pycharm代码文件终端下执行

在这里插入图片描述

或者通过在代码文件夹目录下输入cmd后,窗口输入打包命令代码

在这里插入图片描述

运行结果如下

在这里插入图片描述

注意:上述截图和代码在windows环境运行并打包,如果是在Linux系统或者macOS系统执行python打包命令,需要使用 : 分隔路径:

以上述代码为例,应修改为

pyinstaller -F --noconsole -i favicon.ico your_script.py --add-data="giphy1.gif:." --add-data="Ryan Gosling,Emma Stone - City Of Stars.flac:."

希望对大家有所帮助,如有遇到相关问题,欢迎大家在评论区留言。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 微服务实战系列之玩转Docker(十)
  • 快速选型:9款高效人事薪酬管理工具推荐
  • Redis 集群三主三从配置
  • uniapp 中 web-view 向 App 传递消息
  • Excel设置根据A列是否符合某条件设置B列字体属性
  • OpenDDS的Rtps_Udp传输协议可靠性QoS收发基本流程
  • 关于Qt的系统总结
  • World of Warcraft [CLASSIC] 80 WLK [Gundrak] BUG
  • Hadoop之HDFS文件上传源码解析
  • StackStorm自动化平台
  • 【通天星主动安全监控云平台信息泄露漏洞】
  • MySQL数据库入门,pycharm连接数据库—详细讲解
  • 算法的学习笔记—调整数组顺序使奇数位于偶数前面(牛客JZ21)
  • CSS的:valid和:invalid伪类:增强表单验证的视觉反馈
  • PyTorch 基础学习(7)- 自动微分
  • (三)从jvm层面了解线程的启动和停止
  • 《深入 React 技术栈》
  • 【mysql】环境安装、服务启动、密码设置
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • co模块的前端实现
  • ES6核心特性
  • git 常用命令
  • Gradle 5.0 正式版发布
  • Javascripit类型转换比较那点事儿,双等号(==)
  • Java多态
  • Spring Cloud Feign的两种使用姿势
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • 给Prometheus造假数据的方法
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 浏览器缓存机制分析
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 扑朔迷离的属性和特性【彻底弄清】
  • 七牛云假注销小指南
  • 使用docker-compose进行多节点部署
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 用jquery写贪吃蛇
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • ​520就是要宠粉,你的心头书我买单
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • #{}和${}的区别是什么 -- java面试
  • #传输# #传输数据判断#
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • (3)(3.5) 遥测无线电区域条例
  • (30)数组元素和与数字和的绝对差
  • (floyd+补集) poj 3275
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (五十)第 7 章 图(有向图的十字链表存储)
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复