要想在没有安装 Python 集成环境的电脑上运行开发的
Python 程序,必须把 Python 文件打包成 .exe 格式的可执行
文件。
Python 的打包工作 PyInstaller 提供了两种把 .py 文件包
成 .exe 文件的方式:
第一种方式是把由 .py 文件打包而成的 .exe 文件及相
关文件放在一个目录中 。 这种方式是默认方式,称为 onedir
方式。
第二种方式是加上-F 参数后把制作出的 .exe 打包成一
个独立的 .exe 格式的可执行文件 , 称为 onefile 方法 。
安装 Pyl nstaller
pip3 install pyinstaller
Pylnstaller 使用方法
PyInstaller 有两种制作 exe 文件的方法。

print("Hello Python")
a=input("请按任意键结束!")
exit

以 onedir 方式制作 .exe 可执行文件
切换到 Hello.py 应用程序所在的目录,然后用
pyinstaller Hello.py 命令把 Hello.py 程序打包成 onedir 方式的 .exe 文件 。

打包完成后,在 Hello.py 所在的目录下生成了 Hello.spec 文件和 build 、 dist 两个
子目录 。 其中 dist 子目录中又创建了 Hello 子目录, Hello 子目录中生成了许多文件,
其中就有一个名为 Hello.exe 的文件,我们只要把整个 Hello 目录复制到其他计算机
中,就可以在其他计算机上执行这个 Hello.exe 文件。

双击就可以运行那个hello.exe文件了,就算本机没有安装python也能运行这个文件。

实际制作 onefile 式的 .exe 文件
现在我们通过下列程序来学习 onfi le 式的打包方法 。 程序内容如下:

完成之后,会在 Hello2.py 程序所在的目录下生成 He llo2 叩巳c 文件和 build 、
dist 两个子目录,其中 dist 子目录中只建立了 一 个 Hello2.exe 可执行文件,因为
pyinstaller 己将所有相关的包都包含在了 He llo2.exe 文件中,所以我们只要把 He llo2 .
exe 文件复制到其他计算机上就可以运行了。

双击就能运行这个文件了,就算本机不安装python也能正常运行。

项目打包为可执行文件
在实际应用上, 一般的 Python 程序不会这么简单,可能还包含很多包或是相
关的资源文件,如图片、声音,甚至用 se lenium 执 行 webdriver 时,还必须用到
ChromeDriver.exe 建立 Google Chrome 浏览器等复杂情况。

以 onefile 方式打包 mp3player 声音播放程序

def choose(): # 选曲
global playsong
msg.set("\n播放歌曲:" + choice.get())
playsong=choice.get() def pausemp3(): #暂停
mixer.music.pause()
msg.set("\n暂停播放 {}".format(playsong)) def increase(): #加大音量
global volume
volume +=0.1
if volume>=1:
volume=1
mixer.music.set_volume(volume) def decrease(): #调小音量
global volume
volume -=0.1
if volume<=0.3:
volume=0.3
mixer.music.set_volume(volume) def playmp3(): #播放
global status,playsong,preplaysong
if playsong==preplaysong: #同一首歌曲
if not mixer.music.get_busy():
mixer.music.load(playsong)
mixer.music.play(loops=-1)
else:
mixer.music.unpause()
msg.set("\n正在播放:{}".format(playsong))
else: # 更换歌曲
playNewmp3()
preplaysong=playsong def playNewmp3(): #播放新曲
global playsong
mixer.music.stop()
mixer.music.load(playsong)
mixer.music.play(loops=-1)
msg.set("\n正在播放:{}".format(playsong)) def stopmp3(): #停止播放
mixer.music.stop()
msg.set("\n停止播放") def exitmp3(): # 结束
mixer.music.stop()
win.destroy() ### 主程序从这里开始 ### import tkinter as tk
from pygame import mixer
import glob mixer.init()
win=tk.Tk()
win.geometry("640x380")
win.title("mp3 播放器") labeltitle = tk.Label(win, text="nmp3 播放器", fg="red",font=("新细明体",12))
labeltitle.pack() frame1 = tk.Frame(win) # mp3 歌曲容器
frame1.pack() source_dir = "F:\\pythonBase\\pythonex\\ch13\\mp3\\"
mp3files = glob.glob(source_dir+"*.mp3") playsong=preplaysong = ""
index = 0
volume=0.6
choice = tk.StringVar() for mp3 in mp3files: #建立歌曲菜单按钮
rbtem = tk.Radiobutton(frame1,text=mp3,variable=choice,value=mp3,command=choose)
if(index==0): #选择第1个按钮
rbtem.select()
playsong=preplaysong=mp3
rbtem.grid(row=index, column=0, sticky="w")
index += 1 msg = tk.StringVar()
msg.set("\n播放歌曲:")
label = tk.Label(win, textvariable=msg,fg="blue",font=("新细明体",10))
label.pack()
labelsep = tk.Label(win, text="\n")
labelsep.pack() frame2 = tk.Frame(win) # 按钮容器
frame2.pack()
button1 = tk.Button(frame2, text="播放", width=8,command=playmp3)
button1.grid(row=0, column=0, padx=5, pady=5)
button2 = tk.Button(frame2, text="暂停", width=8,command=pausemp3)
button2.grid(row=0, column=1, padx=5, pady=5)
button3 = tk.Button(frame2, text="音量调大", width=8,command=increase)
button3.grid(row=0, column=2, padx=5, pady=5)
button4 = tk.Button(frame2, text="音量调小", width=8,command=decrease)
button4.grid(row=0, column=3, padx=5, pady=5)
button5 = tk.Button(frame2, text="停止", width=8,command=stopmp3)
button5.grid(row=0, column=4, padx=5, pady=5)
button6 = tk.Button(frame2, text="结束", width=8,command=exitmp3)
button6.grid(row=0, column=5, padx=5, pady=5)
win.protocol("WM_DELETE_WINDOW", exitmp3)
win.mainloop()

运行打包有额外的文件的时候,记得要把那些额外的文件复制到对应这个.exe文件目录中,这样才能正常加载所需文件运行。

吴裕雄--天生自然python学习笔记:python 用pyInstaller模块打包文件的更多相关文章

  1. 吴裕雄--天生自然HADOOP学习笔记:hadoop集群实现PageRank算法实验报告

    实验课程名称:大数据处理技术 实验项目名称:hadoop集群实现PageRank算法 实验类型:综合性 实验日期:2018年 6 月4日-6月14日 学生姓名 吴裕雄 学号 15210120331 班 ...

  2. 吴裕雄--天生自然MySQL学习笔记:MySQL UPDATE 更新

    如果需要修改或更新 MySQL 中的数据,我们可以使用 SQL UPDATE 命令来操作. 语法 以下是 UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法: UPDATE table ...

  3. 吴裕雄--天生自然MySQL学习笔记:MySQL 插入数据

    MySQL 表中使用 INSERT INTO SQL语句来插入数据. 可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据. 以下为向MySQL数据表插入数据通 ...

  4. 吴裕雄--天生自然MySQL学习笔记:MySQL简介

    MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用 ...

  5. 吴裕雄--天生自然 oracle学习笔记:oracle理论学习详解及各种简单操作例子

    1. 数据库的发展过程 层次模型 -->网状模型 -->关系模型 -->对象关系模型 2. 关于数据库的概念 DB:数据库(存储信息的仓库) DBMS:数据库管理系统(用于管理数据库 ...

  6. 吴裕雄--天生自然HADOOP学习笔记:基本环境配置

    实验目的 学习安装Java 学习配置环境变量 学习设置免密码登陆的方法 掌握Linux环境下时间同步的配置 实验原理 1.Java的安装 java是大数据的黄金语言,这和java跨平台的特性是密不可分 ...

  7. 吴裕雄--天生自然HADOOP学习笔记:使用yum安装更新软件

    实验目的 了解yum的原理及配置 学习软件的更新与安装 学习源代码编译安装 实验原理 1.编译安装 前面我们讲到了安装软件的方式,因为linux是开放源码的,我们可以直接获得源码,自己编译安装.例如: ...

  8. 吴裕雄--天生自然HADOOP学习笔记:Shell工具使用

    实验目的 学习使用xshell工具连接Linux服务器 在连上的服务器中进入用户目录 熟悉简单的文件操作命令 实验原理 熟悉shell命令是熟悉使用linux环境进行开发的第一步,我们在linux的交 ...

  9. 吴裕雄--天生自然HTML学习笔记:HTML 布局

    网页布局对改善网站的外观非常重要. 请慎重设计您的网页布局. <!DOCTYPE html> <html> <head>  <meta charset=&qu ...

  10. 吴裕雄--天生自然MySQL学习笔记:MySQL 安装

    所有平台的 MySQL 下载地址为: MySQL 下载:https://dev.mysql.com/downloads/mysql/ 注意:安装过程我们需要通过开启管理员权限来安装,否则会由于权限不足 ...

随机推荐

  1. python try-except处理异常的常用方法分析

    在写python程序时遇到异常想要进行处理时,可以使用try-except来处理,例如: try: 语句1 语句2 . . 语句N except .........: do something ... ...

  2. mysql float 这个大坑

    以后高精度的数据不要用这个字段  今天同事反应 应该是17390.7的数据 结果展示17390.6992  找了半天问题在哪 后来决定先不管  手动现在数据库改数据 结果手动改也改不过来  于是能确定 ...

  3. bootstrap 基础表单

    表单中常见的元素主要包括:文本输入框.下拉选择框.单选按钮.复选按钮.文本域和按钮等.其中每个控件所起的作用都各不相同,而且不同的浏览器对表单控件渲染的风格都各有不同. ☑   LESS版本:对应源文 ...

  4. 「不会」Min25筛

    大概的思路是把所有数分成质数和合数考虑 对于质数,必须找出一个很简单的完全积性函数和所求函数拟合 把所有数当做质数看待求个前缀和,然后再枚举合数的最小质因子把合数T掉 枚举到根号n,即可保证把n以内的 ...

  5. cuda cudaTextureFilterMode

    cudaFilterModePoint:点模式,返回最接近的一个点,即最近邻插值.插值公式 tex(x) = T(i),i=floor(x),注意是对坐标向下取整,所以一般对输入坐标值+0.5,避免无 ...

  6. DVWA-目录遍历-文件包含

    开门见山 · 目录遍历 替换成 2. 文件包含可以使用 绝对路径 也可以 3. 可以使用文件包含来包含一个网址,或者是一个shell 远程文件 空字符绕过字符过滤 %00

  7. 物体检测中常用的几个概念迁移学习、IOU、NMS理解

    1.迁移学习 迁移学习也即所谓的有监督预训练(Supervised pre-training),我们通常把它称之为迁移学习.比如你已经有一大堆标注好的人脸年龄分类的图片数据,训练了一个CNN,用于人脸 ...

  8. 201403-2 窗口 Java

    要想到定义一个窗口类,判断点在不在矩形里好判断 需要一个数组,存放结果 import java.util.ArrayList; import java.util.List; import java.u ...

  9. Web应用和web.xml文件

    1.构建Web应用 手动构建一个Web应用: 在任意的目录小创建一个文件夹,例如webDemo 在第一步创建的文件夹中创建一个WEB-INF文件夹(注意大写); 随意找到一个Web应用,将其中的web ...

  10. vimdiff换行

    两个比较文件同时换行,用:windo set wrap, 或者如下 vimdiff +"windo set wrap" chap/abstract.tex abstract.tex ...