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

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

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

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

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

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

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

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

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

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

  1. def choose(): # 选曲
  2. global playsong
  3. msg.set("\n播放歌曲:" + choice.get())
  4. playsong=choice.get()
  5.  
  6. def pausemp3(): #暂停
  7. mixer.music.pause()
  8. msg.set("\n暂停播放 {}".format(playsong))
  9.  
  10. def increase(): #加大音量
  11. global volume
  12. volume +=0.1
  13. if volume>=1:
  14. volume=1
  15. mixer.music.set_volume(volume)
  16.  
  17. def decrease(): #调小音量
  18. global volume
  19. volume -=0.1
  20. if volume<=0.3:
  21. volume=0.3
  22. mixer.music.set_volume(volume)
  23.  
  24. def playmp3(): #播放
  25. global status,playsong,preplaysong
  26. if playsong==preplaysong: #同一首歌曲
  27. if not mixer.music.get_busy():
  28. mixer.music.load(playsong)
  29. mixer.music.play(loops=-1)
  30. else:
  31. mixer.music.unpause()
  32. msg.set("\n正在播放:{}".format(playsong))
  33. else: # 更换歌曲
  34. playNewmp3()
  35. preplaysong=playsong
  36.  
  37. def playNewmp3(): #播放新曲
  38. global playsong
  39. mixer.music.stop()
  40. mixer.music.load(playsong)
  41. mixer.music.play(loops=-1)
  42. msg.set("\n正在播放:{}".format(playsong))
  43.  
  44. def stopmp3(): #停止播放
  45. mixer.music.stop()
  46. msg.set("\n停止播放")
  47.  
  48. def exitmp3(): # 结束
  49. mixer.music.stop()
  50. win.destroy()
  51.  
  52. ### 主程序从这里开始 ###
  53.  
  54. import tkinter as tk
  55. from pygame import mixer
  56. import glob
  57.  
  58. mixer.init()
  59. win=tk.Tk()
  60. win.geometry("640x380")
  61. win.title("mp3 播放器")
  62.  
  63. labeltitle = tk.Label(win, text="nmp3 播放器", fg="red",font=("新细明体",12))
  64. labeltitle.pack()
  65.  
  66. frame1 = tk.Frame(win) # mp3 歌曲容器
  67. frame1.pack()
  68.  
  69. source_dir = "F:\\pythonBase\\pythonex\\ch13\\mp3\\"
  70. mp3files = glob.glob(source_dir+"*.mp3")
  71.  
  72. playsong=preplaysong = ""
  73. index = 0
  74. volume=0.6
  75. choice = tk.StringVar()
  76.  
  77. for mp3 in mp3files: #建立歌曲菜单按钮
  78. rbtem = tk.Radiobutton(frame1,text=mp3,variable=choice,value=mp3,command=choose)
  79. if(index==0): #选择第1个按钮
  80. rbtem.select()
  81. playsong=preplaysong=mp3
  82. rbtem.grid(row=index, column=0, sticky="w")
  83. index += 1
  84.  
  85. msg = tk.StringVar()
  86. msg.set("\n播放歌曲:")
  87. label = tk.Label(win, textvariable=msg,fg="blue",font=("新细明体",10))
  88. label.pack()
  89. labelsep = tk.Label(win, text="\n")
  90. labelsep.pack()
  91.  
  92. frame2 = tk.Frame(win) # 按钮容器
  93. frame2.pack()
  94. button1 = tk.Button(frame2, text="播放", width=8,command=playmp3)
  95. button1.grid(row=0, column=0, padx=5, pady=5)
  96. button2 = tk.Button(frame2, text="暂停", width=8,command=pausemp3)
  97. button2.grid(row=0, column=1, padx=5, pady=5)
  98. button3 = tk.Button(frame2, text="音量调大", width=8,command=increase)
  99. button3.grid(row=0, column=2, padx=5, pady=5)
  100. button4 = tk.Button(frame2, text="音量调小", width=8,command=decrease)
  101. button4.grid(row=0, column=3, padx=5, pady=5)
  102. button5 = tk.Button(frame2, text="停止", width=8,command=stopmp3)
  103. button5.grid(row=0, column=4, padx=5, pady=5)
  104. button6 = tk.Button(frame2, text="结束", width=8,command=exitmp3)
  105. button6.grid(row=0, column=5, padx=5, pady=5)
  106. win.protocol("WM_DELETE_WINDOW", exitmp3)
  107. 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. 备份mysql的批处理命令

    需要工具mysqldump.exe的支持,安装mysql默认是带此工具的 批处理命令 set NOW_TIME_HH=%time:~0,2% if "%NOW_TIME_HH%" ...

  2. Shell脚本exit用法与区别

    在Shell脚本中,往往会遇到一些判断类型为某个值不符合预期值的时候就退出主脚本/当前脚本/当前函数,那么Exit与return的用法与区别是什么呢? 下面先使用Exit举个简单例子,脚本内容如下 # ...

  3. C++queue的使用

    C++队列是一种容器适配器,提供了一种先进先出的数据结构. 队列(queue)模板类定义在<queue>头文件中 基本操作: 定义一个queue变量:queue<Type> q ...

  4. Git 学习 day01

    Tips:最近的工作中需要用到版本控制工具git,所以准备开一个分类用来记录下自己学到的知识,以备以后温习 在安装完git之后需要设置用户名和用户邮箱: $ git config --global u ...

  5. Java并发分析—ConcurrentHashMap

    LZ在 https://www.cnblogs.com/xyzyj/p/6696545.html 中简单介绍了List和Map中的常用集合,唯独没有CurrentHashMap.原因是CurrentH ...

  6. springboot跨域请求接口示例

    一.项目架构 二.项目内容 1.GlobalCrosConfig.java package com.config; import org.springframework.context.annotat ...

  7. elasticsearch-填坑

    1.分页参数 ,start=(page-1)*size 2.高亮字段结果的处理方式 3.float类型参数从map中取出用double接收 4.结果封装需手动封装 package com.search ...

  8. Paper Review: Epigenetic Landscape, Cell Differentiation 01

    Today, I'll share a review papers about Epigenetic Landscape, the Epigenetic Landscape is related to ...

  9. IPC---有名管道FIFO

    一.参考网址 1.Linux学习之——FIFO实例

  10. Spring Cloud Alibaba 教程 | Nacos(三)

    使用Nacos作为配置中心 前面我们已经介绍过滤Nacos是一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台.所以它可以作为注册中心和配置中心,作为注册中心Nacos可以让我们灵活配置多 ...