pyinstaller使用

pyinstaller 入门

  • Pyat5 的安装程序开发
  • PyQt6 的安装程序开发
    1. 编写好的程序编译成可执行文件+资源文件:
    2. 用 zip 打包,基本可以压缩到 1/3 大小;
    3. 然后再用 pyqt 写一个 setup 安装程序,安装到指定目录(安装的过程实际就是把文件解压、拷贝到指定目录、注册到注册表中)

pyinstaller 简介

PyInstaller bundles a Python application and all its dependencies into a singlepackage.The user can run the packaged app without installing a Pythoninterpreter or any modules. Pyinstaller supports Python 3.7 and newer, andcorrectly bundles many major Python packages such as numpy, matplotlib, PyQtwxPython, and others.

PyInstaller is tested against Windows, MacOS X, and Linux. However, it is not across-compiler: to make a Windows app vou run PyInstaller on Windows, and tomake a tinux app you cor it on linps, etc, ioyinsts ler has beer asedst them isnot part of our continuous integration tests, and the development team offersno guarantee (all code for these platforms comes from external contributionsthat PyInstaller will work on these platforms or that they will continue to besupported.)

安装

pip install pyinstaller -i https://pypi.douban.com/simple

官网

使用

进入到 pyinstaller 目录下,执行命令:

shell 复制代码
pyinstaller -F main.py

参数:

  • -F: 打包成一个 exe 文件
  • -w: 打包成一个无控制台窗口的 exe 文件
  • -i: 打包成带图标的 exe 文件(后面跟图标文件路径)
  • -n: 打包成指定名称的 exe 文件(后面跟文件名)
  • -D: 打包成一个文件夹,里面包含 exe 文件和其他文件

打包后的文件

  • dist 文件夹: 包含打包后的文件
  • main.spec 文件: 包含打包的配置信息
  • main.exe 文件: 打包后的可执行文件
选项 说明
-h, --help 查看该模块的帮助信息
-F, --onefile 产生单个的可执行文件
-D, --onedir 产生一个目录(包含多个文件)作为可执行程序
-a, --ascii 不包含 Unicode 字符集支持
-d, --debug 产生 debug 版本的可执行文件
-w, --windowed, --noconsole 指定程序运行时不显示命令行窗口(仅对 Windows 有效)
-c, --nowindowed, --console 指定使用命令行窗口运行程序(仅对 Windows 有效)
-o DIR, --out=DIR 指定 spec 文件的生成路径。如果未指定,则默认使用当前目录来生成 spec 文件
-p DIR, --path=DIR 设定 Python 导入模块的路径(和设置 PYTHONPATH 环境变量的作用相似)。也可使用路径分隔符(Windows 使用分号,Linux 使用冒号)来分隔多个路径
-n NAME, --name=NAME 指定项目(产生的 spec)的名字。如果省略该选项,那么第一个脚本文件的主文件名将作为 spec 的名字

pyqt 打包后的图标丢失问题

在使用 pyinstaller 打包 pyqt 程序时,如果程序中使用了图标,打包后的程序的图标会丢失。

解决方法:

  1. 把图标文件夹复制放到程序所在目录下,并在程序中指定图标路径。
  2. 编译完成后修改.spec 文件,在其中添加图标文件路径(双斜杠)
相关推荐
全栈练习生2 分钟前
大模型原理之投机解码
python·ai
青少儿编程课堂3 分钟前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:差分数组与区间修改实战解析
c++·python·算法·bfs·信息学竞赛
小小张说故事16 分钟前
Python 的 sort 为什么又稳又快?拆开 Timsort:run 检测、minrun 与 galloping 的三板斧
python
kaizq27 分钟前
从照片开口说话实现到应用职业教培变革落地
python·应用职业教育·ai混元-元宝·数学学习基础·用中学-学中用·照片aigc-gif
OnlineProxy31 分钟前
Python 高负载异步爬虫优化指南:深挖 httpx 与 aiohttp 的性能极限
爬虫·python·httpx
零基础12344 分钟前
基于模型的强化学习与不基于模型的强化学习:核心区别与实战选择
python·算法
我命由我123451 小时前
5-2.Python 编码进阶 - 字符串进阶(拼接、普通格式化、普通格式化数字精度控制、快速格式化、遍历、常用方法)
java·开发语言·后端·python·学习·java-ee·学习方法
专业程序开发源1 小时前
django视听资源推荐系统16690-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·php·课程设计
我的xiaodoujiao1 小时前
Django 权限系统项目实战详细图文教程 2--环境搭建
后端·python·django
4SAPI8 小时前
多模型请求路由怎么设计?成本、速度和能力如何平衡
人工智能·python·gateway·php