安装需要用到pip工具,该工具在3.5版本的python中已经自带不用另行安装,但是需要在系统变量中添加python下的Scripts文件夹,如下图:
在Path变量值中添加【;(python的安装目录)\Scripts】 *注意不要漏了最前面的分号
用管理员权限安装
pip install pyinstaller
#后面的路径为你的python文件的位置(如果第一步没有添加变量,这里还是要到Script下执行pyinstaller.exe文件)
pyinstaller -F C:\Users\wyc\Desktop\Auto\auto.py
基础命令:
命令 | 操作说明 |
---|---|
-F | 打包成单个文件 |
-D | 打包成单个文件夹形式 |
-C | 控制台模式,执行程序会跳出控制台 |
-w | 窗口模式,不会跳出控制台 |
打开就可以运行了呢!
在脚本定义一个读取相对路径的函数:
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)
在需要调用文件的地方用如下格式包裹:
resource_path('resources/SING-fight.mp3')
pyinstaller -F C:\Users\wyc\Desktop\Auto\pyResource1.py
在生成的.spec文件exe = EXE()中加入下面这行:
[('resources\SING-fight.mp3',r'C:\Users\wyc\Desktop\Auto\resources\SING-fight.mp3','music'),],
元组内的三个项:
第一个为代码中resource_path包裹的地址;
第二个是文件的实际地址;
第三个是打包进程序的文件名字
打开.spec文件,会被正确引用:
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 就可以了。
添加图标的方法:
方法一:在执行打包命令时加入下面这句
--icon=xxx.ico
第二种(推荐)是用文本编辑器或记事本打开执行打包后文件夹内新生成的xxx.spec文件,然后在exe =()中加入一行:
icon = ’xxx.ico‘
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之后生成的,在哪个文件夹执行就生成到哪个文件夹下;
删除dist和bulid文件夹,重新生成,对.spec文件打包
pyinstaller pyResource1.spec
双击执行exe文件,音乐可以听到
跳出cmd窗口表示执行中
1.图标转换网站:https://www.ico.la/
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) | 使用指定下一个要播放的音乐文件,当前的音乐播放完成后自动开始播放指定的下一个。一次只能指定一个等待播放的音乐文件。 |