本帖最后由 lookfeiji 于 2023-8-8 17:48 编辑
第一次发帖,有点小激动哈
代码注释的比较清楚了,也无需过多描述,刚刚折腾出来的代码,还热乎的
官方文档地址:https://pyinstaller.org/en/stable/usage.html
PyInstaller模块,是将.py源码打包成exe执行程序的模块,百度与官方文档多介绍的是以cmd命令行形式打包的,
在官方文档里关于模块的函数介绍只有这么一句
[Python] 纯文本查看 复制代码
"""
pyinstaller --onefile --noconsole --hidden-import os --hidden-import time --hidden-import random
--hidden-import PyQt5 --hidden-import pygame --hidden-import tkinter --hidden-import mutagen
--hidden-import configparser MusicPlayer.py
PyInstaller.__main__.run([
'my_script.py',
'--onefile',
'--windowed'
])
'--onedir'# 生成一个文件夹,与--onefile不同,--onefile生成一个单可执行文件
--no-embed-manifest # 生成外部.exe.manifest文件,而不是将清单嵌入EXE中。仅适用于Onedir模式;在单一模式下,无论此选项如何,清单始终是嵌入式的
-r RESOURCE, --resource RESOURCE # 将资源添加或更新为Windows可执行文件。资源是一到四个项目,file [,type [,name [,语言]]。文件可以是数据文件或exe/dll。对于数据文件,至少必须指定类型和名称。语言默认为0或可能被指定为通配符 *以更新给定类型和名称的所有资源。对于EXE/DLL文件,如果省略了类型,名称和语言或指定为通配符 *,则文件中的所有资源将添加/更新到最终可执行文件。此选项可以多次使用
#大概意思应该是为可执行文件继续添加配置文件或者可执行代码吧
"""
import os
import PyInstaller.__main__
# 定义绝对路径
path = r'C:\Users\Administrator\Desktop\Music player'
files = ['MusicPlayer.py', 'music.py'] # 多文件编译往这里加,然后再添加到'--add-data内就好了
# 组合Python文件路径MusicPlayer.py为主程序源码文件
py = os.path.join(path, files[0])
py2 = os.path.join(path, files[1])
# 组合图标文件路径
ico = os.path.join(path, 'icon.ico') # 为exe程序文件设置图标
# 运行PyInstaller命令,打包源码
PyInstaller.__main__.run([
py, # 要打包的Python文件
'--onefile', # 生成单个可执行文件,省事的不在乎文件大小的用这个,不能与--onedir同时存在,只能二选一
# '--onedir', # 生成可执行文件夹,只封装了指定的源码,将模块包全部给吐在同一文件夹内,不能与'--onefile'同时存在,刚刚试试了一下启动速度也非常快,所以推荐这个
'--windowed', # 无控制台窗口
'--ico', ico, # 设置图标文件
'--distpath', os.path.join(path, 'dist'), # 指定生成dist文件夹的输出目录
'--workpath', path, # 指定工作目录,缓存目录,可执行文件生成后后可以删除掉
'--specpath', path, # 指定.spec文件的输出目录,可执行文件生成后可以删除掉
'--add-data', f'{py2}.;.',
# "--add-data" 可以多次使用来添加多个文件
# 如果还有其他文件需要添加,可以像这样继续添加参数
# '--add-data', f'{py3}.;.',
# '--add-data', f'{py4}.;.',
# '--strip', # 剥离二进制文件中的调试信息,减小文件大小,不可用,官方文档上说不推荐使用,liunx系统用来优化用的,虽然也支持windows但是我测试是有问题的
'--clean' # 清除此次打包缓存,为下次打包做准备,并不会对现有的执行文件产生影响
'--no-embed-manifest' # 这个据说是不将清单嵌入EXE中的
])
后面还可以加隐性导入模块,基本格式是:
'--hidden-import=os','--hidden-import=sys',其中--hidden-import=也可以多次出现,据gpt说不写入源码支持的模块,程序在没装py环境的系统上无法运行,但是官方文档没有关于这方面的介绍,要是有老铁感兴趣的可以测试一下,另一个关于打包文件过大我也没捣鼓过,所以我也不知道,但是百度可查的方法就是用python3 -m venv myenv创建一个虚拟环境,然后激活切换到myenv环境里,再安装源码与打包所需的模块之后再打包,另一种是在编写源码时不要用from PyQt5 import*这种带*号的导入方式导包
InstPyQt5 import*这种方式aller |