python 打包可执行文件-pyinstaller详解

python 打包可执行文件-pyinstaller详解

  • 引言
  • 一、参数详解
  • 二、优化代码
  • 三、体积压缩

引言

pyinstaller是一个将python程序打包成独立可执行文件(exe,app等)的工具,它具有跨平台兼容性,可以在windows,mac和linux上使用。需要注意其不是一个交叉编译工具,只能在对应系统的平台下生成该平台的可执行文件,例如:无法在windows平台下生成linux系统的可执行文件。

安装:pip install -U pyinstaller
pyinstaller官方文档:https://pyinstaller.org/en/stable/

  • 以python MP4视频转GIF动图这篇博客的程序为例,展示pyinstaller的用法。

一、参数详解

打包命令:pyinstaller xxx.py,其主要参数如下:

可参考https://pyinstaller.org/en/stable/usage.html#options

  • -F, --onefile 仅生成一个可执行文件。
  • -D, --onedir 生成一个文件夹,里面包含可执行文件。
  • -n NAME, --name NAME 输出文件的名称,默认xx.py的名称xx。
  • --distpath DIR 输出路径,默认 ./dist。
  • -y, --noconfirm 覆盖输出文件不需要确认。
  • --clean 在生成之前,清理PyInstaller缓存并删除临时文件。

WindowsMac Os X 特有参数:

  • -c, --console, --nowindowed 打开控制台窗口(默认)。
  • -w, --windowed, --noconsole 不打开控制台窗口。

仅限Windows的特有参数

  • –hide-console 如果程序拥有控制台窗口(即,不是从现有控制台窗口启动的),则引导加载程序会自动隐藏或最小化控制台窗口。
  • -r RESOURCE, --resource RESOURCE 向Windows可执行文件添加或更新资源。

进行使用,对main.py进行打包:

  • pyinstaller main.py,生成了main文件夹,里面包含dll、exe等文件
    在这里插入图片描述
  • pyinstaller -F -w --distpath ./ -n MP4_to_GIF main.py,在当前路径只生成了一个exe文件,但是比较大
    在这里插入图片描述

二、优化代码

之前在代码中使用了import *,比如:

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

修改为,用到什么import什么,其它代码也做相应修改,比如将QtGui.QFont 改为 QFont

from PyQt5.QtCore import QSize, QRect, QMetaObject, QCoreApplication
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QFileDialog, QPushButton, QWidget, QApplication, QMainWindow
  • 这样修改挺麻烦的…,从原来的111MB减少到了102MB。 对于这个程序来说,有一定进步,但意义不大
    在这里插入图片描述

更进一步可参考:使用pipenv虚拟环境打包

三、体积压缩

下载地址:UPX官网

参数 --upx-dir UPX_DIR 可手动设置UPX程序路径

  • pyinstaller -F -w --distpath ./ -n MP4_to_GIF --upx-dir ./upx-4.1.0-win64 main.py,打包变慢了…体积显著减少,从102MB减到了85MB
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/125836.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分享几个优秀开源免费管理后台模版,建议收藏!

大家好,我是 jonssonyan 今天和大家分享一些免费开源的后台管理页面,帮助大家快速搭建前端页面。为什么要用模板?道理很简单,原因是方便我们快速开发。我们不应该花太多的时间在页面调整上,而应该把精力放在核心逻辑和…

Electron笔记

基础环境搭建 官网:https://www.electronjs.org/zh/ 这一套笔记根据这套视频而写的 创建项目 方式一: 官网点击GitHub往下拉找到快速入门就能看到下面这几个命令了 git clone https://github.com/electron/electron-quick-start //克隆项目 cd electron-quick-start //…

【有限域除法】二元多项式除法电路原理及C语言实现

二元多项式除法电路原理 例: g ( x ) = x 4 + x 2 + x + 1 g(x)=x^4 + x^2+x+1

gorm 自定义时间、字符串数组类型

文章目录 自定义时间类型自定义字符串数组测试与完整代码测试代码测试结果 GORM 是GO语言中一款强大友好的ORM框架,但在使用过程中内置的数据类型不能满足以下两个需求,如下: time.Time类型返回的是 2023-10-03T09:12:08.5352808:00这种字符串…

Qt之显示PDF文件

之前使用过mupdf库,能够成功显示pdf,但是我用着有BUG,不太理解它的代码,搞了好久都不行。后面又试了其他库,如pdfium、popler、下载了很多例程,都跑不起来!后面偶然得知xpdf库,看起来…

数据科学家的编程语言

数据科学家的编程语言 在今天有256种编程语言可供选择,选择要学习的语言可能会令人不知所措和困难。有些语言更适用于构建游戏,而有些更适用于软件工程,还有一些更适用于数据科学。 编程语言的类型 低级编程语言是计算机用来执行操作的最容…

@ConfigurationProperties配置绑定~

ConfigurationProperties注解是Spring Boot中的一个注解,用于将配置文件中的属性值绑定到Java类中的字段上。 ConfigurationProperties注解的作用包括: 实现配置文件属性和Java类字段的映射,简化了读取配置文件的操作。 可以指定配置文件中…

vue3 中使用echarts图表——柱状图

柱状图是比较常用的图形结构&#xff0c;所以我先收集一些精美的柱状图 一、柱状图&#xff1a;设置圆角和颜色 <template><div class"box" ref"chartDom"></div> </template> <script setup> import { ref, onMounted } fr…

CSS波浪进度条

目录 1. &#x1f310; 介绍 2. &#x1f3d7;️ HTML结构 3. &#x1f3a8; 页面样式 4. &#x1f4e6; 容器和波浪 5. &#x1f30a; 波浪效果 6. &#x1f4ca; 进度文本 7. &#x1f504; 旋转动画 8. &#x1f31f; 整体效果 9. &#x1f389; 结论 获取完整代码…

使用Scipy优化梯度下降问题

目 录 问题重述 附加问题 步骤实施 1.查看Scipy官网SciPy&#xff0c;找到优化有关的模块&#xff08;Optimize&#xff09; 2.研究多种优化策略&#xff0c;选择最符合代码的方案进行优化 3.minimize函数参数及其返回值 4.代码展示 5.结果展示 6.进一步优化 6.1对…

NEFU数字图像处理(1)绪论

一、简介 1.1什么是数字图像 图像是三维场景在二维平面上的影像。根据其存储方式和表现形式&#xff0c;可以将图像分为模拟图像和数字图像两大类 图像处理方法&#xff1a;光学方法、电子学方法 模拟图像&#xff1a;连续的图像数字图像&#xff1a;通过对时间上和数值上连续…

边缘计算网关

一、项目整体框架图 二、项目整体描述 边缘计算网关项目主要实现了智能家居场景和工业物联网场景下设备的数据采集和控制。 整个项目分为三大层&#xff1a;用户接口层、网关层、设备层。 其中用户层通过QT客户端、WEB界面及阿里云提供数据展示和用户接口。 网关使用虚拟机代替…