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

PyQt6实例_批量下载pdf工具_使用pyinstaller与installForge打包成exe文件

目录

前置:

步骤:

step one 准备好已开发完毕的项目代码

step two 安装pyinstaller

step three 执行pyinstaller pdfdownload.py,获取初始.spec文件

step four 修改.spec文件,将data文件夹加入到打包程序中

step five 增加data文件夹打包

1 执行前,先看下未增加data文件夹的情况。

2 执行,pyinstaller pdfdownload.spec

3)执行后,看dist文件夹情况

step six 如果要发布免安装文件

step seven 制作成单个exe安装文件 

1 下载 installForge

2 安装installForge

3 制作

视频


前置:

1 本系列将以 “PyQt6实例_批量下载pdf工具”开头,放在 【PyQt6实例】 专栏
2 本系列涉及到的PyQt6知识点:
   线程池:QThreadPool,QRunnable;
   信号与槽:pyqtSignal,pyqtSlot;
   界面:QTextEdit,QLabel,QLineText,QPushButton,QMainWindow,QWidget;
   布局:QHBoxLayout,QVBoxLayout;
   弹框:QFileDialog,QMessageBox。
3 本系列后续会在B站录制视频,到时会在文末贴出链接。本人还是建议先看博文,不懂的再看视频,这样效率高,节约时间。

步骤:

step one 准备好已开发完毕的项目代码

示例项目“批量下载pdf工具”,代码中的项目名:pdfdownload

项目入口(所谓项目入口就是 if __name__ == '__main__': 该函数所在位置)所在文件名为pdfdownload.py

项目情况:

1 整个项目只有一个pdfdownload.py一个py文件

2 一个数据文件夹data,在程序执行过程中会往data中读取数据和写入数据

step two 安装pyinstaller

未避免最后打成的包过大,只包含项目执行需要的包,建议大家都在虚拟环境里开发项目,这样可以确保环境的纯净,不会有一大堆不需要包堆在环境里。本实例的操作都在虚拟环境中进行。

在虚拟环境的终端(PyCharm打开项目下的Terminal)执行 pip install pyinstaller

注意:命令行前有(venv)说明在虚拟环境里。“venv”是创建的虚拟环境名,如果创建时命名成venv123,那这里就显示为(venv123)

 网络好,外加电脑配置还行的情况,安装速度非常快,两三秒时间

step three 执行pyinstaller pdfdownload.py,获取初始.spec文件

1 在terminal中定位到 pdfdownload.py 目录下,也就是定位到项目入口对应的py文件目录

2 输入 pyinstaller 项目入口文件名,本实例输入 pyinstaller pdfdownload.py

由于本实例项目很小,执行很快。执行完毕后,打开项目目录

 项目目录下新增了一个文件和两个文件夹

1 .spec是打包用的配置文件。.spec的文件名可以在配置中修改,默认是项目入口文件的文件名。这个文件重要,打包的配置信息都在里面,可以根据打包需求修改配置信息进行打包

2 build文件夹。打包的过程文件,可以不用理会,用不上。

3 dist文件夹。打包后的目标文件,如果要把项目当成免安装软件发布,把dist里的文件压缩成zip进行发布。

step four 修改.spec文件,将data文件夹加入到打包程序中

如果项目里有向外读取文件(诸如:获取图标文件、读取txt文件等)或对外写入文件(诸如:程序关闭前保存状态信息到txt文件中等)的功能,需要将外部文件和文件夹加入到打包程序中。

本实例程序有一个data文件夹,在data文件夹中保存了几个文件,程序运行时会读取文件,并在运行过程中往文件写入。所以,打包时需要将data文件夹加入到打包程序中。

1 打开.spec文件 

2 在 a 中的 datas 字段加上 (‘data’,'data'),前一个data指的是告知打包程序要从项目中拷贝的文件夹名,后一个data表示告知打包程序复制到结果中的文件夹名。一般不会改名,除非在项目代码中作了额外设置。 

3 将控制台关闭。默认打包会把控制台打开,也就是说打包后执行exe文件会把控制台同步打开,关闭控制台也会把exe同时关闭,在实际使用exe过程中,控制台没必要打开。在.spec文件件设置控制台关闭。

step five 增加data文件夹打包

1 执行前,先看下未增加data文件夹的情况。

进入dist目录

 在 _internal 中没有 data 文件夹,此时你双击 pdfdownload.exe 是会闪退的。

2 执行,pyinstaller pdfdownload.spec

1)删除项目目录下的 build 和 dist 文件夹

2)在PyCharm终端执行 pyinstaller pdfdownload.spec 命令

3)执行后,看dist文件夹情况

 新增了 data 文件夹。

运行 pdfdownload.exe

检查各个功能是否正常。具体检查过程不赘述(可以看博文 PyQt6实例_批量下载pdf工具_exe使用方法-CSDN博客)。 

检查没有问题后,进行下一步。

step six 如果要发布免安装文件

如果是要发布免安装文件,那到这一步就完结了,不需要用到后面的installForge操作。

直接将 dist 目录的内容压缩成 zip等压缩包发布。使用者直接解压运行 exe就行。

step seven 制作成单个exe安装文件 

1 下载 installForge

https://installforge.net/download/   installForge下载地址

 文件很小,只有4.19MB

2 安装installForge

 

 

3 制作

 1)打开 General 面板,输入Product Name 产品名,自己定义;输入Product 可以写版本号,自己决定;选择exe可以运行的操作系统,自行勾选。

2)点击左侧Files, 然后点击上面的“Add Files”

3)选择pyinstaller生成的dist文件夹中的 exe 文件

 4)点击上面的“Add Folder”

5)选择 pyinstaller 生成的dist文件夹下的 _internal 文件夹

 项目内容添加完毕。

6)点击左侧“Shotcuts”,点击下面的“Add...” 

7)设置好了应用安装完后桌面快捷方式的显示情况。开始栏中的设置一样。本实例没有设置图标,直接用的默认。注意:目标文件Target File 一定要和最终生成的文件名一致

 本实例只创建桌面快捷方式。

8)点击左侧“Build”,Setup File 右侧的 按钮 

9)选择一个空目录,等会最终生成的exe文件会在这个目录中生成。在文件名中写入要生成的exe文件名。注意,这里的文件名一定要和前面创建桌面快捷方式的目标文件Target File 文件名保持一致。

10)点击上面的“Build” 

 等待。。。,大概1到2分钟

制作完毕。

 最终exe文件使用方法,可查看博文 PyQt6实例_批量下载pdf工具_exe使用方法-CSDN博客

视频

PyQt6实例_批量下载pdf工具_v1使用pyinstaller与installForge打包成exe文件_哔哩哔哩_bilibili 

PyQt6实例_批量下载pdf工具_v2使用pyinstaller与installForge打包成exe文件_哔哩哔哩_bilibili

PyQt6实例_批量下载pdf工具_v3使用pyinstaller与installForge打包成exe文件_哔哩哔哩_bilibili

相关文章:

PyQt6实例_批量下载pdf工具_使用pyinstaller与installForge打包成exe文件

目录 前置: 步骤: step one 准备好已开发完毕的项目代码 step two 安装pyinstaller step three 执行pyinstaller pdfdownload.py,获取初始.spec文件 step four 修改.spec文件,将data文件夹加入到打包程序中 step five 增加…...

NVR接入录像回放平台EasyCVR视频融合平台城市/乡镇污水处理厂解决方案

一、方案背景 随着经济的快速发展和城市化的加快,城市污水排放量急剧增加,给城市环境和粮食安全带来了威胁。因此,污水处理厂的建设和高效运营成为对城市环境保护的重要任务。 目前,国内许多城市虽已建成污水处理系统&#xff0…...

Vue2 vs Vue3 生命周期全面对比:created 的进化与革新!!!

🎯 Vue2 vs Vue3 生命周期全面对比:created 的进化与革新 🔥 核心差异全景图 一、钩子函数命名与定位变化 1. 命名规范革新 Vue2 钩子Vue3 钩子 (Options API)Vue3 Composition APIbeforeCreate❌ 无setup() 替代created✅ 保留setup() 替代…...

Ubuntu 22.04安装MongoDB:GLM4模型对话数据收集与微调教程

在Ubuntu 22.04安装MongoDB Community Edition的教程请点击下方链接进行参考: 点击这里获取MongoDB Community Edition安装教程 今天将为大家带来如何微调GLM4模型并连接数据库进行对话的教程。快跟着小编一起试试吧~ 1. 大模型 ChatGLM4 微调步骤 1.1 从 github…...

并查集(Union-Find Set)课程笔记

目录 1. 并查集原理 2. 并查集的实现 3. 并查集应用 应用 1:省份数量问题 应用 2:等式方程的可满足性 1. 并查集原理 并查集用于处理需要将不同元素划分成若干不相交集合的问题。最开始时,每个元素都是单独的一个集合,随后根…...

算法刷题记录——LeetCode篇(1.4) [第31~40题](持续更新)

更新时间:2025-03-29 算法题解目录汇总:算法刷题记录——题解目录汇总技术博客总目录:计算机技术系列博客——目录页 优先整理热门100及面试150,不定期持续更新,欢迎关注! 32. 最长有效括号 给你一个只包…...

【区块链安全 | 第十四篇】类型之值类型(一)

文章目录 值类型布尔值整数运算符取模运算指数运算 定点数地址(Address)类型转换地址成员balance 和 transfersendcall,delegatecall 和 staticcallcode 和 codehash 合约类型(Contract Types)固定大小字节数组&#x…...

一款超级好用且开源免费的数据可视化工具——Superset

认识Superset 数字经济、数字化转型、大数据等等依旧是如今火热的领域,数据工作有一个重要的环节就是数据可视化。 看得见的数据才更有价值! 现如今依旧有多数企业号称有多少多少数据,然而如果这些数据只是呆在冷冰冰的数据库或文件内则毫无…...

android gradle一直编译不下来,可能是打开了gradle离线模式

gradle离线模式 当然,如果本地已经将gradle,lib都下载下来了,也可以打开这个离线模式,不然重启AS的时候可能会重新走一次下载流程...

(C语言)学生信息表(学生管理系统)(基于通讯录改版)(正式版)(C语言项目)

1.首先是头文件: //student.h //头文件//防止头文件被重复包含#pragma once//宏定义符号常量,方便维护和修改 #define ID_MAX 20 #define NAME_MAX 20 #define AGE_MAX 5 #define SEX_MAX 5 #define CLA_MAX 20 //定义初始最大容量 #define MAX 1//定义结…...

【Linux】Linux 系统启动流程详解

1. BIOS/UEFI 阶段 硬件自检(POST) BIOS/UEFI 执行硬件检查(内存、CPU、外设等)。若硬件异常,通过蜂鸣码或屏幕提示错误。 选择启动设备 按配置顺序(硬盘、U盘、网络等)寻找可引导设备。BIOS&a…...

Jetson 设备卸载 OpenCV 4.5.4 并编译安装 OpenCV 4.2.0

‌一、卸载 OpenCV 4.5.4‌ 清除已安装的 OpenCV 库‌ sudo apt-get purge libopencv* python3-opencv # 卸载所有APT安装的OpenCV包‌:ml-citation{ref"1,3" data"citationList"}sudo apt autoremove # 清理残留依赖‌:ml-citation{ref"1,4"…...

【计算机网络】OSI七层模型完全指南:从比特流到应用交互的逐层拆解

OSI模型 导读一、概念二、模型层次结构2.1 物理层(Physical Layer)2.2 数据链路层(Data Link Layer)​2.3 ​网络层(Network Layer)​2.4 ​传输层(Transport Layer)​2.5 ​会话层&…...

渗透测试:登录页面的测试-弱口令思路和实战

渗透测试:登录页面的测试思路和实战 渗透测试(Penetration Testing),也称为“渗透性测试”,是一种评估计算机系统、网络或Web应用安全性的一种方法。它通过模拟真实世界中的攻击手段和策略,来检测目标系统…...

Android BottomNavigationView 完全自定义指南:图标、文字颜色与选中状态

1. 核心功能概述 通过 Material Design 的 BottomNavigationView,你可以轻松实现以下自定义: ✅ 动态切换选中/默认图标 ✅ 自定义选中与默认文字颜色 ✅ 控制文字显示模式(始终显示/仅选中显示/自动隐藏) ✅ 添加动画和高级样…...

提示词工程

参考网站:提示工程指南 – Nextra 声明:我现在也才刚刚开始学习 人工智能,我会着重于 agent 的学习,如果有不对的地方请大家及时指出。 模型设置 前言 在向大模型发送请求时,常常能看到以下参数: {&qu…...

分页查询原理与优化方案完全指南

分页查询原理与优化方案完全指南 一、分页查询基础原理 1.1 传统分页实现方式 分页查询的核心目的是将大数据集分割成多个小块进行展示,最常见的实现方式是使用LIMIT-OFFSET语法: -- 基础分页查询 SELECT * FROM table_name ORDER BY id LIMIT page_size OFFSET (page_n…...

嵌入式软件设计规范框架(MISRA-C 2012增强版)

以下是一份基于MISRA-C的嵌入式软件设计规范(完整技术文档框架),包含编码规范、安全设计原则和工程实践要求: 嵌入式软件设计规范(MISRA-C 2012增强版) 一、编码基础规范 1.1 文件组织 头文件保护 /* 示…...

课程6. 决策树

课程6. 决策树 决策树直觉模型结构几何解释决策树的构建ID3算法信息内容标准使用决策树处理差距推广到回归问题分支标准与经典损失函数的关系 过度拟合和欠拟合欠拟合过拟合 优点和缺点案例随机生成数据集分类IRIS 数据集解决回归问题的一个简短例子 决策树 今天我们继续探索一…...

【UE5.3.2】初学1:适合初学者的入门路线图和建议

3D人物的动作制作 大神分析:3D人物的动作制作通常可以分为以下几个步骤: 角色绑定(Rigging):将3D人物模型绑定到一个骨骼结构上,使得模型能够进行动画控制。 动画制作(Animation):通过控制骨骼结构,制作出人物的各种动作,例如走路、跳跃、打斗等。 动画编辑(Ani…...

OpenCV 图形API(4)内核 API

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 G-API 背后的核心理念是可移植性——使用 G-API 构建的流水线必须是可移植的(或者至少具备可移植的能力)。这意味着&…...

pom.xml与.yml,java配置参数传递

pom.xml与 .yml java配置参数传递 在Java项目中,通过 pom.xml 和 .yml 文件(如 application.yml)传递变量通常涉及 构建时(Maven)和 运行时(Spring Boot)两个阶段的配置。以下是具体的实现方法&…...

LeetCode算法题(Go语言实现)_21

题目 给你一个整数数组 arr,如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。 一、代码实现 func uniqueOccurrences(arr []int) bool {freq : make(map[int]int)// 统计每个数字的出现次数for _, num : range arr {freq[n…...

Docker部署前后端分离项目

镜像下载 在有网络的电脑下载镜像(Windows):依次在CMD命令台执行以下代码 docker pull node:20docker pull openjdk:22-jdkdocker pull mysql:8.0docker pull nginx:1.27 删除镜像代码: docker rmi node:latest 查看镜像列表…...

Linux系统安装MySQL 8.0完整指南(新手友好版)

MySQL作为最流行的开源关系型数据库之一,广泛应用于各种开发和生产环境。本教程将详细介绍在Linux系统上安装MySQL 8.0的全过程,包括卸载旧版本、安装新版本、基础配置和远程连接设置,特别适合Linux新手学习使用。 一、卸载旧版MySQL&#x…...

第二次作业

#创建表,把id设为主键 mysql> create table test02(-> id int primary key, #----主键约束-> name varchar(50)-> ); Query OK, 0 rows affected (0.02 sec) ​ #插入数据测试 mysql> insert into test02 values(1,"成都"); Query OK, 1 r…...

AI大模型下传统 Spring Java工程开发的演进和变化方向

1. 背景和动因 传统Spring开发优势:Spring生态以稳定、模块化、依赖注入(DI)等特性著称,长期支撑企业级应用开发,具备高扩展性和可维护性。AI大模型崛起:近几年,LLM(如GPT-4、LLaMA…...

周学习总结

这周继续学习了Java的知识点,还写了考查递归、递推与贪心的算法题。 算法小结 递归与递推一般是观察观察题干,分析题目的规律,可能还会用到分治算法,推导出一个合理的表达式,再使用函数递归来进行求解。 贪心在求解时…...

‌19.思科路由器:OSPF协议引入直连路由的实验研究

思科路由器:OSPF协议引入直连路由的实验研究 一、实验拓扑二、基本配置2.1、sw1的配置2.2、开启交换机三层功能三、ospf的配置3.1、R1的配置3.2、R2的配置3.3、重启ospf进程四、引入直连路由五、验证结果随着互联网技术的不断发展,路由器作为网络互联的关键设备,其性能与稳定…...

Zcanpro搭配USBCANFD-200U在新能源汽车研发测试中的应用指南(周立功/致远电子)

——国产工具链的崛起与智能汽车测试新范式 引言:新能源汽车测试的国产化突围 随着新能源汽车智能化、网联化程度的提升,研发测试面临三大核心挑战:多协议融合(CAN FD/LIN/以太网)、高实时性数据交互需求、复杂工况下…...

JSON的基础知识

文章目录 前言json协议的基本格式json 数组类型 的语法规则json协议报文的实例json常见的一些格式错误在gd32中使用cjson库小结 前言 json协议在互联网应用,物联网应用中都会用到。所谓工欲善其事必先利其器,我们需要学习了解json协议的具体格式&#xf…...

week2|机器学习(吴恩达)学习笔记

一、多维特征 1.1、什么是多维特征? 1)在我们的原始估计房价的版本中,我们只有一个变量: x x x 来预估 y y y 2)但是现在假设你也知道其他的参数变量,那么我们就可以引入多个参数来提高预测 y y y的准确…...

各类神经网络学习:(七)GRU 门控循环单元(上集),详细结构说明

上一篇下一篇LSTM(下集)GRU(下集) GRU(门控循环单元) 它其实是 R N N RNN RNN 和 L S T M LSTM LSTM 的折中版,有关 R N N RNN RNN 和 L S T M LSTM LSTM 请参考往期博客。 实际应用要比 …...

uniapp利用第三方(阿里云)实现双人视频/音频通话功能(附完整的项目代码)

要在UniApp中利用阿里云实现双人视频/音频通话功能,你需要使用阿里云的实时音视频服务(RTC)。以下是一个基本的实现步骤和示例代码。 基本的操作步骤 注册阿里云账号并开通RTC服务: 访问阿里云官网,注册账号并开通RTC服务。 获取AppID和AppKey: 在RTC控制台创建应用,…...

wsl2的centos7安装jdk17、maven

JDK安装 查询系统中的jdk rpm -qa | grep java按照查询的结果,删除对应版本 yum -y remove java-1.7.0-openjdk*检查是否删除 java -version 下载JDK17 JDK17,下载之后存到wsl目录下(看你自己)然后一键安装 sudo rpm -ivh jd…...

Android 单例模式全解析:从基础实现到最佳实践

单例模式(Singleton Pattern)是软件开发中常用的设计模式,其核心是确保一个类在全局范围内只有一个实例,并提供全局访问点。在 Android 开发中,单例模式常用于管理全局资源(如网络管理器、数据库助手、配置…...

Redis GEO

Redis GEO 引言 Redis GEO是Redis数据库中的一种高级功能,允许用户存储地理位置信息并执行基于地理空间查询的操作。本文将详细介绍Redis GEO的基本概念、使用方法以及在实际应用中的优势。 基本概念 GEO编码 GEO编码是指将地理位置信息(如经纬度&a…...

vulnhub-serile靶机通关攻略

下载地址:https://www.vulnhub.com/entry/serial-1,349/ 靶机安装特殊,附带安装参考文章:https://zhuanlan.zhihu.com/p/113887109 扫描IP地址 arp-scan -l扫描端口 nmap -p- 192.168.112.141访问80端口 线索指向cookie cookie是base64编…...

SAP-ABAP:OData 协议深度解析:架构、实践与最佳应用

OData 协议深度解析:架构、实践与最佳应用 一、协议基础与核心特性 协议定义与目标 定位:基于REST的开放数据协议,标准化数据访问接口,由OASIS组织维护,最新版本为OData v4.01。设计哲学:通过统一资源标识符(URI)和HTTP方法抽象数据操作,降低异构系统集成复杂度。核心…...

408 计算机网络 知识点记忆(3)

前言 本文基于王道考研课程与湖科大计算机网络课程教学内容,系统梳理核心知识记忆点和框架,既为个人复习沉淀思考,亦希望能与同行者互助共进。(PS:后续将持续迭代优化细节) 往期内容 408 计算机网络 知识…...

java学习笔记10——集合框架

枚举类的使用 Collection接口继承树 Map接口继承树 Collection 接口方法 总结: 集合框架概述 1.内存层面需要针对于多个数据进行存储。此时,可以考虑的容器有:数组、集合类2.数组存储多个数据方面的特点:> 数组一旦初始化,其长度就是确定的…...

埃文科技企业AI大模型一体机——昇腾体系+DeepSeek+RAG一站式解决方案

面对企业级市场海量数据资产与复杂业务场景深度耦合的刚需,埃文科技重磅推出基于华为昇腾算力DeepSeek大模型的企业一体机产品,提供DeepSeek多版本大模型一体机选择,为企业提供本地昇腾算力DeepSeek大模型RAG知识库的一体化解决方案&#xff…...

蓝桥杯---BFS解决FloofFill算法1---图像渲染

文章目录 1.算法简介2.题目概述3.算法原理4.代码分析 1.算法简介 这个算法是关于我们的floodfill的相关的问题,这个算法其实从名字就可以看出来:洪水灌溉,其实这个算法的过程就和他的名字非常相似,下面的这个图就生动的展示了这个…...

个人博客网站从搭建到上线教程

步骤1:设计个人网站 设计个人博客网站的风格样式,可以在各个模板网站上多浏览浏览,以便有更多设计网站风格样式的经验。 设计个人博客网站的内容,你希望你的网站包含哪些内容如你的个人基本信息介绍、你想分享的项目、你想分享的技术文档等等。 步骤2:选择开发技术栈 因…...

【FreeRTOS】裸机开发与操作系统区别

🔎【博主简介】🔎 🏅CSDN博客专家 🏅2021年博客之星物联网与嵌入式开发TOP5 🏅2022年博客之星物联网与嵌入式开发TOP4 🏅2021年2022年C站百大博主 🏅华为云开发…...

力扣每日一题:2712——使所有字符相等的最小成本

使所有字符相等的最小成本 题目示例示例1示例2 题解这些话乍一看可能看不懂,但是多读两遍就明白了。很神奇的解法,像魔术一样。 题目 给你一个下标从 0 开始、长度为 n 的二进制字符串 s ,你可以对其执行两种操作: 选中一个下标…...

Java EE(17)——网络原理——IP数据报结构IP协议解析(简述)

一.IP数据报结构 (1)版本:指明协议的版本,IPv4就是4,IPv6就是6 (2)首部长度:单位是4字节,表示IP报头的长度范围是20~60字节 (3)8位区分服务:实际上只有4位TOS有效,分别是最小延时,最…...

Pycharm运行时报“Empty suite”,可能是忽略了这个问题

问题:使用Pycharm运行testcases目录下的.py文件,报“Empty suite”,没有找到测试项。 排查过python解释器、pytest框架安装等等,依然报这个错,依然没找到,最后终端运行: pytest test_demo.py&a…...

Linux快速安装docker和docker-componse步骤

在 CentOS 7 上安装 Docker 和 Docker Compose 的步骤如下: 1. 安装 Docker 1.1. 更新系统 首先,确保你的系统是最新版本: sudo yum update -y1.2. 安装必要的包 安装 yum-utils,这是管理 YUM 源的工具: sudo yu…...

OP2177运算放大器:高性能模拟信号处理的关键元件

在现代电子系统中,模拟信号处理至关重要,运算放大器作为模拟电路的核心部件,其性能优劣直接影响系统的整体表现。OP2177 是一款具有卓越性能的运算放大器,在众多领域有着广泛应用。以下将结合相关资料,对 OP2177 进行全…...