当前位置: 首页 > news >正文

【Python】pyinstaller:打包工具

pyinstaller:打包程序的工具,将python文件和所有依赖打包到文件夹、并生成可执行文件,也方便在其他电脑上使用程序。

官方文档:PyInstaller Manual — PyInstaller 6.15.0 documentation

安装:

pip install pyinstaller

打包程序:

pyinstaller py文件 各参数

常用参数:

pyinstaller 各参数
--icon="ico图标路径"应用程序的图标
--add-data "源路径;目标路径"

额外的文件一起打包到可执行文件中,也可在spec文件中配置

额外的文件在临时目录中。

--noconsole不显示控制台窗口
--onefile

打包到一个独立的二进制文件,打包环境下sys._MEIPASS查看,

程序运行时生成临时目录,程序结束临时目录删除

--windowedGUI项目(qt, tkinter)使用,否则会启用控制台
--workpath打包好的文件夹所在位置
--distpath

可执行文件(windows为.exe)所在位置,

以及所有临时文件所在位置。

--specpath配置文件(.spec)所在位置
--hidden-import打包额外python库
 --version查看pyinstaller版本信息
--help查看所有参数信息

注意:

默认打包后的文件夹保存在当前目录下,默认可执行文件和临时文件都在当前目录的dist目录下。

  • 使用--workpath但没有使用--distpath:打包后的文件夹在指定路径,而dist目录(可执行文件)仍在当前目录下。
  • 使用--onefile:dist目录下只有可执行文件没有临时文件。只在程序运行时生成临时目录(在其他路径)存放临时文件,程序结束则临时目录删除。
  • 使用--onefile且使用--add-data:dist目录下只有可执行文件没有临时文件。打包到可执行文件中的额外文件,只在程序运行时存在于临时目录,可设置为永久存在。
  • 使用--add-data "源路径;目标路径"但没有使用--onefile:(windows)中是分号";"隔开源路径和目标路径。额外文件都在dist目录下的临时目录中。可使用多个--add-data "源路径;目标路径"。

额外文件在程序中永久使用:

① 不使用--add-data参数,将文件拷贝到打包目录下,在程序中使用绝对路径读取。

② 使用--add-data参数,但不使用--onefile参数(该参数生成的临时目录会在程序结束时删除)。程序中读取文件的路径直接使用打包后的临时路径(sys._MEIPASS获取),默认和可执行文件在同一目录下。

③ 其他方法相对复杂此处忽略。

 查看临时目录路径:

打包环境下sys._MEIPASS

# 注意相关模块的导入
def default_path(filename):'''获取打包程序的运行时临时目录路径'''if hasattr(sys, '_MEIPASS'):path = sys._MEIPASSelse:path = os.path.abspath(".")return path# 举例 1:读取文件的路径直接为打包后的临时目录
tmp_path = default_path('data.txt')
filename = os.path.join(tmp_path, 'data.txt')
with open(filename, 'r') as file:...# 举例 2:pyside2的状态栏显示打包后的临时目录路径
class mywindow(QMainWindow):...tmp_path = default_path('data.txt')self.statusbar.showMessage(f'程序运行时临时目录路径:{tmp_path}')...if __name__ == "__main__":...window = mywindow()window.show()...

打包举例:

# 不显示控制台窗口,打包到当前目录下,exe文件和临时文件都在当前目录的dist目录下
pyinstaller main.py --noconsole# 不显示控制台窗口,打包到当前目录下,exe文件和临时文件都在当前目录的dist目录下, 应用程序有图标
pyinstaller main.py --noconsole --ico="G:/do.ico"# 不显示控制台窗口,打包到当前目录下,只有exe文件在dist目录下,临时文件在程序运行时的临时目录(程序结束该目录删除),有图标
pyinstaller main.py --onefile --noconsole --ico="G:/do.ico"# 不显示控制台窗口,打包到当前目录下,只有exe文件在dist目录下,临时文件在程序运行时的临时目录(程序结束该目录删除),有图标,
# data.txt打包到exe文件中,程序运行时在临时目录中,程序结束目录删除,该文件也不存在,可设置永久存在
pyinstaller main.py --onefile --noconsole --ico="G:/do.ico" --add-data "data.txt;."# 不显示控制台窗口,打包到G:/aa目录下,exe文件和临时文件都在G:/aa/dist目录下,有图标
pyinstaller main.py --noconsole --ico="G:/do.ico" --workpath="G:/aa" --distpath "G:/aa/dist"# 不显示控制台窗口,打包到G:/aa目录下,exe文件在G:/aa/dist目录下,临时文件在程序运行时的临时目录(程序结束该目录删除),有图标
pyinstaller main.py --onefile --noconsole --ico="G:/do.ico" --workpath="G:/aa" --distpath "G:/aa/dist"# 不显示控制台窗口,打包到当前目录下,exe文件和临时文件都在当前目录的dist目录下,
# 两个额外文件都打包到可执行文件中,data.txt和do.ico都在dist目录下的临时目录中
pyinstaller main.py --noconsole --add-data "data.txt;." --add-data "do.ico;."


 


文章转载自:

http://C350ClAm.rrhgx.cn
http://unFcuEXn.rrhgx.cn
http://5ykxeAgx.rrhgx.cn
http://QN81Mua7.rrhgx.cn
http://0XTxxSht.rrhgx.cn
http://23C675ML.rrhgx.cn
http://dyOssv78.rrhgx.cn
http://udsDogE4.rrhgx.cn
http://aXVZEy6H.rrhgx.cn
http://3DbXMxi7.rrhgx.cn
http://VidxQTJ5.rrhgx.cn
http://GoR62e9m.rrhgx.cn
http://H4XmxOfj.rrhgx.cn
http://kodrfAc1.rrhgx.cn
http://z8cV7GF2.rrhgx.cn
http://qQKm1EnH.rrhgx.cn
http://0nvrgWbd.rrhgx.cn
http://4HKYNDUu.rrhgx.cn
http://wfgAnOTU.rrhgx.cn
http://S4CIcgSx.rrhgx.cn
http://9CCcjMfp.rrhgx.cn
http://MhIIHeCP.rrhgx.cn
http://QoRdwqwG.rrhgx.cn
http://w0951SSe.rrhgx.cn
http://8vPVxvtf.rrhgx.cn
http://5c0CI578.rrhgx.cn
http://jnnLgcbB.rrhgx.cn
http://ex5CBuhD.rrhgx.cn
http://bNLgxG4c.rrhgx.cn
http://c3foBiey.rrhgx.cn
http://www.dtcms.com/a/366521.html

相关文章:

  • Mac 使用 softhsm
  • 一文搞懂保险中的Nominee\Beneficiary\Trustee三个角色
  • 无线路由器:从家庭上网到智慧互联的核心设备
  • 文件传输工具rsync|rust开发环境安装|Ascend实验相关命令
  • 51单片机-按键、蜂鸣器、定时器模块及中断
  • Python学习3.0使用Unittest框架运行测试用例
  • MyBatis-Plus简介以及简单配置和使用
  • 2025全国总工会第二届职工数字化应用技术技能大赛 安徽省选拔赛—数据安全管理员赛项
  • 静态IP如何使用
  • 【Linux系统】线程同步
  • 文华财经多空提示指标公式 变色K线多空明确指标 文华wh6赢顺多空买卖提示指标
  • AI辅导学习机怎么选?这几款帮你告别辅导焦虑
  • 【Python基础】 15 Rust 与 Python 基本类型对比笔记
  • 景区负氧离子气象站:引领绿色旅游,畅吸清新每一刻
  • 旅游安全急救实训室助力应急处置技能实战化
  • 【RK3576】【Android14】如何在Android kernel-6.1 的版本中添加一个ko驱动并编译出来?
  • 学习日记-SpringMVC-day49-9.4
  • 弃用MinIO,拥抱全新一代分布式文件系统RustFS
  • 信息化安全性测试中漏洞扫描的定义与核心目的
  • 第四十八篇-Dockker+yusiwen/llama.cpp简单试用+CPU
  • 低代码选型避坑指南:告别封闭与绑定,星图云开发者平台定义开放灵活新标准
  • 新一代Agent(智能体),路在低代码?
  • 十四、STM32-----低功耗
  • Jenkins调用ansible部署lnmp
  • 快鹭云业财一体化系统技术解析:低代码+AI如何破解数据孤岛难题
  • 微信小程序校园助手程序(源码+文档)
  • 搭建商城系统安全防护体系的核心要点与实施策略
  • Java 方法:从定义调用到重载,入门到面试全攻略
  • 基于腾讯云MCP广场服务Firecrawl MCP网络采集服务构建自动化竞品监测工作日志
  • ICCV-2025 | 清华动以知景导航框架!MTU3D:连接视觉定位与探索,实现高效多样的具身导航