python脚本封装成exe程序_使用pyinstaller将python脚本打包成exe文件

1.配置系统变量

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

22141825_eiO4.jpg

在Path变量值中添加【;(python的安装目录)\Scripts】

*注意不要漏了最前面的分号

2.安装PyInstaller

用管理员权限安装

pip install pyinstaller

3.使用PyInstaller生成exe文件

#后面的路径为你的python文件的位置(如果第一步没有添加变量,这里还是要到Script下执行pyinstaller.exe文件)

pyinstaller -F C:\Users\wyc\Desktop\Auto\auto.py

基础命令:

命令

操作说明

-F

打包成单个文件

-D

打包成单个文件夹形式

-C

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

-w

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

114526_10Iw_3018050.png

114648_69jd_3018050.png

114702_BkQU_3018050.png

打开就可以运行了呢!

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

4.1定义相对路径函数

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

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调用路径

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

resource_path('resources/SING-fight.mp3')

4.3生成.spec文件

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包裹的地址;

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

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

4.4添加ico和资源引用

打开.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‘

完整听音乐demo如下:

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)

165304_fGM6_3018050.png

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

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

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

pyinstaller pyResource1.spec

165945_0FSl_3018050.png

170039_52Ju_3018050.png

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

170119_fXMJ_3018050.png

跳出cmd窗口表示执行中

附注:

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)

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值