Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用pyinstaller将python脚本打包成exe文件

使用pyinstaller将python脚本打包成exe文件

作者头像
晓歌
发布于 2018-08-15 05:09:44
发布于 2018-08-15 05:09:44
2.1K00
代码可运行
举报
文章被收录于专栏:破晓之歌破晓之歌
运行总次数:0
代码可运行

1.配置系统变量

安装需要用到pip工具,该工具在3.5版本的python中已经自带不用另行安装,但是需要在系统变量中添加python下的Scripts文件夹,如下图: 

在Path变量值中添加【;(python的安装目录)\Scripts】  *注意不要漏了最前面的分号

2.安装PyInstaller

用管理员权限安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install pyinstaller

3.使用PyInstaller生成exe文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#后面的路径为你的python文件的位置(如果第一步没有添加变量,这里还是要到Script下执行pyinstaller.exe文件)
pyinstaller -F C:\Users\wyc\Desktop\Auto\auto.py

基础命令:

命令

操作说明

-F

打包成单个文件

-D

打包成单个文件夹形式

-C

控制台模式,执行程序会跳出控制台

-w

窗口模式,不会跳出控制台

打开就可以运行了呢!

4.文件调用(音频,图片,图标等)

4.1定义相对路径函数

在脚本定义一个读取相对路径的函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import time
import os, sys

def resource_path(relative_path):
    """
    定义一个读取相对路径的函数
      """
    if hasattr(sys, "_MEIPASS"):
        base_path = sys._MEIPASS
    else:
        base_path = os.path.abspath(".")
    return os.path.join(base_path, relative_path)

4.2调用路径

在需要调用文件的地方用如下格式包裹:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
resource_path('resources/SING-fight.mp3')

4.3生成.spec文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pyinstaller -F C:\Users\wyc\Desktop\Auto\pyResource1.py

在生成的.spec文件exe = EXE()中加入下面这行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[('resources\SING-fight.mp3',r'C:\Users\wyc\Desktop\Auto\resources\SING-fight.mp3','music'),],

元组内的三个项:

第一个为代码中resource_path包裹的地址;

第二个是文件的实际地址;

第三个是打包进程序的文件名字

4.4添加ico和资源引用

打开.spec文件,会被正确引用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          [('resources\SING-fight.mp3',r'C:\Users\wyc\Desktop\Auto\resources\SING-fight.mp3','music'),],
          name='Diary',  # 这里可以设置可执行文件的名字
          icon='SING.ico',# 设置图标
          debug=False,
          strip=None,
          upx=True,
          console=True ) # 是否开启控制台模式

注意加地址前的r以及行尾的逗号,更新过spec文件后,再重新打包只需要执行pyinstaller start.spec 就可以了。

添加图标的方法:

方法一:在执行打包命令时加入下面这句

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--icon=xxx.ico

第二种(推荐)是用文本编辑器或记事本打开执行打包后文件夹内新生成的xxx.spec文件,然后在exe =()中加入一行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
icon = ’xxx.ico‘

完整听音乐demo如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import time
import os, sys
import pygame

def resource_path(relative_path):
    """
    定义一个读取相对路径的函数
      """
    if hasattr(sys, "_MEIPASS"):
        base_path = sys._MEIPASS
    else:
        base_path = os.path.abspath(".")
    return os.path.join(base_path, relative_path)


def music():
    """
    定义一个播放音乐的函数
    :return:
    """
    pygame.mixer.init()
    print("播放音乐1")
    track = pygame.mixer.music.load(resource_path('resources/SING-fight.mp3'))
    pygame.mixer.music.play()
    # print("播放音乐2")
    # track1 = pygame.mixer.music.load("xx.mp3")
    # pygame.mixer.music.play()
    #
    # print("播放音乐3")
    # track2 = pygame.mixer.Sound("tkzc.wav")
    # track2.play()


def timer(n):
    '''''
    每n秒执行一次
    '''
    while True:
        print(time.strftime('%Y-%m-%d %X', time.localtime()))
        start()  # 此处为要执行的任务
        time.sleep(n)


def start():
    print('开始执行mp3文件')
    music()  # 播放音乐了
    print('mp3文件执行完毕')


timer(10)

说明:dist、bulid,pyResource1.spec文件是执行pyinstall之后生成的,在哪个文件夹执行就生成到哪个文件夹下;

4.5重新生成带音乐和图标的exe文件

删除dist和bulid文件夹,重新生成,对.spec文件打包

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pyinstaller pyResource1.spec

双击执行exe文件,音乐可以听到

跳出cmd窗口表示执行中

附注:

1.图标转换网站:https://www.ico.la/

2.参考文档:http://blog.csdn.net/wws563/article/details/52242112#4%E4%BD%BF%E7%94%A8pyinstaller%E7%94%9F%E6%88%90exe%E6%96%87%E4%BB%B6

https://www.cnblogs.com/emptybox/p/5092643.html

http://blog.csdn.net/a6225301/article/details/47103447

3.音乐播放模块说明:

方法

说明

pygame.mixer.init()

或者只初始化音频部分

pygame.mixer.music.load('xx.mp3')

使用文件名作为参数载入音乐 ,音乐可以是ogg、mp3等格式。载入的音乐不会全部放到内容中,而是以流的形式播放的,即在播放的时候才会一点点从文件中读取。

pygame.mixer.music.play()

播放载入的音乐。该函数立即返回,音乐播放在后台进行。

pygame.mixer.music.play(loops=0, start=0.0)

loops和start分别代表重复的次数和开始播放的位置,如果是-1表示循环播放,省略表示只播放1次。第二个参数和第三个参数分别表示播放的起始和结束位置。

pygame.mixer.music.stop()

停止播放,

pygame.mixer.music.pause()

暂停播放

pygame.mixer.music.unpause()

取消暂停。

pygame.mixer.music.fadeout(time)

用来进行淡出,在time毫秒的时间内音量由初始值渐变为0,最后停止播放。

pygame.mixer.music.set_volume(value)

来设置播放的音量,音量value的范围为0.0到1.0。

pygame.mixer.music.get_busy()

判断是否在播放音乐,返回1为正在播放。

pygame.mixer.music.set_endevent(pygame.USEREVENT + 1)

在音乐播放完成时,用事件的方式通知用户程序,设置当音乐播放完成时发送pygame.USEREVENT+1事件给用户程序。

pygame.mixer.music.queue(filename)

使用指定下一个要播放的音乐文件,当前的音乐播放完成后自动开始播放指定的下一个。一次只能指定一个等待播放的音乐文件。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
python播放音乐
转自:http://my.oschina.net/lenglingx/blog/183101
py3study
2020/01/09
2.3K0
Python播放暂停音乐
~ 正在学习爬虫的你,可以在“学习资料”专栏获取学习资料 如果需要哪些python有关的学习资料,欢迎留言~
Python研究者
2020/09/28
2.2K0
Python播放暂停音乐
Pyinstaller如何将资源文件一起打包至exe中
基本原理:Pyinstaller 可以将资源文件一起bundle到exe中,当exe在运行时,会生成一个临时文件夹,程序可通过sys._MEIPASS访问临时文件夹中的资源
hbbliyong
2018/10/09
3.8K0
Pyinstaller如何将资源文件一起打包至exe中
pyinstaller .py转可执行文件exe打包后路径|python
1 sys.path[0]  目录 2 sys.argv[0]  程序目录+文件名 3 os.path.dirname(os.path.realpath(sys.executable)) 父目录 4 os.path.dirname(os.path.realpath(sys.argv[0]))  同(3)
zmh-program
2023/02/06
1.6K0
你的Python会唱歌吗?
cp27代表python2.7版本,win32代表32位操作系统。我的是python3.7,系统是64位,所以我下载的是pygame-1.9.6-cp37-cp37m-win_amd64.whl。
阿黎逸阳
2020/09/07
1.3K0
Python定时打开世界杯直播,还有小姐姐语音提醒哦~不错过每一场世界杯比赛
卡塔尔世界杯今晚0点就要开幕了,为了防止大家沉迷工作,忘记看球,小编用50行Python代码写了一个定时提醒你看球的小程序,还有小姐姐语音提醒哟~🎇 1、代码说明 获取上面的源代码,在PyCharm里打开,就可以运行了。 如果想了解其实现原理的同学,其中的重点逻辑下文进行说明,看之前,先领个世界杯外卖红包吧。👇 系统提醒 toaster.show_toast( title='世界杯开始', msg='大兄弟,看球了!', icon_path=r'./icon.jpg', )
程序员晚枫
2022/12/09
3480
Python定时打开世界杯直播,还有小姐姐语音提醒哦~不错过每一场世界杯比赛
Python 技术篇-pygame播放音乐没有声音,原因及解决办法
加上pygame.display.set_mode()就好了,这是加载界面的意思。
小蓝枣
2020/09/23
1.6K0
有了音乐下载器,怎么能没有音乐播放器呢,打造自己的音乐播放器
网易云音乐,QQ音乐,酷狗音乐,是我们经常会用到的音乐软件,当然有时候我们因为一首歌,需要在各大音乐平台上跳转,那么我们完全可以使用python自己打造一款音乐播放器
松鼠爱吃饼干
2020/09/15
1.9K0
有了音乐下载器,怎么能没有音乐播放器呢,打造自己的音乐播放器
基于Python+tkinter+pygame的音乐播放器完整源码
import os import tkinter import tkinter.filedialog import random import time import threading import pygame folder = '' def play(): # folder用来表示存放MP3音乐文件的文件夹 global folder musics = [folder+'\\'+music for music in os.listdir(folder) \ if music.endsw
Python小屋屋主
2018/04/16
2.3K0
基于Python+tkinter+pygame的音乐播放器完整源码
Python 技术篇-pygame库实现播放音乐,带漂亮小界面!
pygame库用来做游戏的,也常用来播放音乐。 用pip install pygame来安装pygame库
小蓝枣
2020/09/23
2.4K0
Python 播放声音 音频与beep
#import winsound #winsound.Beep(600,1000) import os os.system("paplay 1.wav") python使用pygame播放音乐. 链接地址:https://my.oschina.net/lenglingx/blog/183101 # -*- coding: cp936 -*- import pygame pygame.mixer.init() print("播放音乐1") track = pygame.mixer.music.load("t
py3study
2020/01/07
1.8K0
python在线音乐播放器_python实现音乐播放器「建议收藏」
最近,学习了一下如何使用python制作一个简单的音乐播放器,整体的效果如下图所示。
全栈程序员站长
2022/09/13
3.8K0
pyinstaller打包exe应用程序【乘法计算过程演示】
参考:https://blog.csdn.net/tm_yuyue/article/details/130472040
Michael阿明
2023/08/09
2100
pyinstaller打包exe应用程序【乘法计算过程演示】
3D星空图V2版——添加背景图片和音乐
第二个是加载后图片太小,可能只有窗口的三分之一。可以在画图中重新调整图片的大小,把水平和垂直的值变大。
阿黎逸阳
2020/09/07
9360
用 Python 向你比个心
之前写了一篇用 Python 画一个小猪佩奇和哆啦 A 梦,然后最近看到有人用 turtle 画了一个心,觉得挺有意思的,于是把代码复制到本地,再加了个播放音乐。
伪君子
2018/07/21
1.7K1
用 Python 向你比个心
Python画小仓鼠
肉嘟嘟的小动物很是可爱,本文介绍运用Python中的turtle库控制函数绘制小仓鼠。
阿黎逸阳
2022/11/11
1.7K0
Python画小仓鼠
从零开始学习PYTHON3讲义(十四)写一个mp3播放器
通常来说,Python解释执行,运行速度慢,并不适合完整的开发游戏。随着电脑速度的快速提高,这种情况有所好转,但开发游戏仍然不是Python的重点工作。 大多应用是利用Python开发效率高的特点,进行游戏原型验证,或者在大的游戏系统中,使用Python进行地图、场景等定制。还有就是使用游戏开发的技术和理念,将Python用于商业视觉展示、工程效果展示。
俺踏月色而来
2019/01/03
1.7K0
pygame 笔记-8 背景音乐&子弹音效
另一个问题,发射子弹和子弹击中,也需要声音,这个必须用另一种方法,否则的话,会把背景音乐给停掉:
菩提树下的杨过
2018/12/28
9760
Python|python文件打包实战之进阶篇
在上周的文章中,小编给大家讲了python gui编程,做了一个有趣的“消息轰炸机”,如果想发给朋友用怎么办呢?所以今天,小编就通过实战来让大家学会用pyinstaller打包带有资源文件的python文件。
算法与编程之美
2020/05/19
5900
Python|python文件打包实战之进阶篇
这个Python脚本牛逼了,秒抢红包and无视撤回消息
当自己一直喜欢的女神发给自己一个消息的时候,还没来得及看,就撤回了。是不是自己在心中"YY",她是不是发了什么,然后你问她的时候,她却说没什么。
python学习教程
2019/11/01
6830
推荐阅读
相关推荐
python播放音乐
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档