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

news2025/4/25 22:09:52

目录

前置:

步骤:

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

局域网共享失败?打印机/文件夹共享工具

很多时候,在办公或家庭环境中,我们需要进行打印机和文件夹的共享,以便更高效地协作和处理文件。然而,寻找对应版本的共享设置或是不想花费太多时间去进行复杂的电脑设置,总是让人感到头疼。今天,我要向大家…

DeepSeek-V3-250324: AI模型新突破,性能超越GPT-4.5

DeepSeek 于 3 月 25 日宣布完成 V3 模型的小版本升级,推出 DeepSeek-V3-250324 版本。新版本在推理能力、代码生成、中文写作及多模态任务上实现显著优化,尤其在数学和代码类评测中得分超越 GPT-4.5,引发行业高度关注。 DeepSeek-V3-250324…

第R9周:阿尔兹海默症诊断(优化特征选择版)

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 文章目录 1、导入数据2、数据处理2.1 患病占比2.2 相关性分析2.3 年龄与患病探究 3、特征选择4、构建数据集4.1 数据集划分与标准化4.2 构建加载 5、构建模型6…

19726 星际旅行

19726 星际旅行 ⭐️难度&#xff1a;困难 &#x1f31f;考点&#xff1a;Dijkstra、省赛、最短路问题、期望、2024 &#x1f4d6; &#x1f4da; import java.util.*;public class Main {static int N 1005;static ArrayList<Integer>[] g new ArrayList[N]; // …

DeepSeek大模型应用开发新模式

DeepSeek大模型应用全景技术架构 DeepSeek大模型 VS 主流大模型 DeepSeek大模型系统提示词 VS 主流大模型 DeepSeek大模型迭代版本 DeepSeek专业化模型分类 DeepSeek大模型部署所需显存资源 DeepSeek不同参数模型及应用场景 DeepSeek大模型安装部署技术选型

探索:如何构建一个自我的AI辅助的开发环境?

构建支持AI的开发辅助环境并实现全流程自动化&#xff0c;需要整合开发工具链、AI模型服务和自动化流水线。以下是分步实施指南&#xff0c;包含关键技术栈和架构设计&#xff1a; 一、开发环境基础架构 1. 工具链集成平台 #mermaid-svg-RFSaibQJwVEcW9fT {font-family:"…

华为eNSP-配置静态路由与静态路由备份

一、静态路由介绍 静态路由是指用户或网络管理员手工配置的路由信息。当网络拓扑结构或者链路状态发生改变时&#xff0c;需要网络管理人员手工修改静态路由信息。相比于动态路由协议&#xff0c;静态路由无需频繁地交换各自的路由表&#xff0c;配置简单&#xff0c;比较适合…

时尚界正在试图用AI,创造更多冲击力

数字艺术正以深度融合的方式&#xff0c;在时尚、游戏、影视等行业实现跨界合作&#xff0c;催生了多样化的商业模式&#xff0c;为创作者和品牌带来更多机会&#xff0c;数字艺术更是突破了传统艺术的限制&#xff0c;以趣味触达用户&#xff0c;尤其吸引了年轻一代的消费群体…

ai画图comfyUI 精准定位gligen。允许指定图像中多个对象的位置和大小

基础功能下&#xff0c;outpainting是内容填充&#xff0c;拉近拉远镜头&#xff0c;自动填充旁边物体。嵌入模型也需要单独下载&#xff0c;演示完示例后推荐模型站有更直观效果介绍和用法。选中精确定位。看一眼坐标&#xff0c;直接默认出一张图。然后修改定位&#xff0c;和…

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例7,TableView16_07 列拖拽排序示例

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例7,TableView16_07 列…

使用idea开发spark程序

新建scala 项目 创建lib目录 将spark jars/ 路径下所有jar 复制到 lib目录 添加依赖 创建scala 程序 package sparkimport org.apache.spark.{SparkConf, SparkContext}object WordCount {def main(args: Array[String]): Unit {val conf new SparkConf().setAppName(&q…

学习日记0327

A cross-domain knowledge tracing model based on graph optimal transport 我们使用gnn来学习这些节点的特征。在此基础上&#xff0c;我们使用显式分布距离度量对齐来自两个不同域的特征向量&#xff0c;旨在最小化域差异&#xff0c;实现最大的跨域知识转移。 AEGOT-CDKT…

CSS学习笔记6——网页布局

目录 一、元素的浮动属性、清除浮动 清除浮动的其他方法 1、使用空标签清除浮动影响 2、使用overflow属性清除浮动 3、使用伪元素清除浮动影响 原理 overflow属性 二、元素的定位 1、相对定位 2、绝对定位 ​编辑 3、固定定位 z-index层叠等级属性 一、元素的浮动…

线程同步——互斥锁

线程同步——互斥锁 目录 一、基本概念 二、打印成对出现的字母 三、生产者消费者&#xff08;有限缓冲问题&#xff09; 3.1 基本概念 3.2 代码实现 一、基本概念 互斥锁是一种用于控制对共享资源访问的同步机制。它确保在同一时间内&#xff0c;只有一个线程可以访问被…

C#实现HTTP服务器:处理文件上传---解析MultipartFormDataContent

完整项目托管地址&#xff1a;https://github.com/sometiny/http HTTP还有重要的一块&#xff1a;文件上传。 这篇文章将详细讲解下&#xff0c;前面实现了同一个链接处理多个请求&#xff0c;为了方便&#xff0c;我们独立写了一个HTTP基类&#xff0c;专门处理HTTP请求。 ht…

leetcoed0044. 通配符匹配 hard

1 题目&#xff1a;通配符匹配 官方难度&#xff1a;难 给你一个输入字符串 (s) 和一个字符模式 ( p ) &#xff0c;请你实现一个支持 ‘?’ 和 ‘*’ 匹配规则的通配符匹配&#xff1a; ‘?’ 可以匹配任何单个字符。 ‘*’ 可以匹配任意字符序列&#xff08;包括空字符序…

蓝桥杯嵌入式第十二届程序设计题

一、题目概览 设计一个小型停车计费系统 二、分模块实现 1、LCD void disp_proc() {if(view0){char text[30];sprintf(text," Data");LCD_DisplayStringLine(Line2,(uint8_t *)text);sprintf(text," CNBR:%d ",Cnum);LCD_DisplayStri…

python多态、静态方法和类方法

目录 一、多态 二、静态方法 三、类方法 一、多态 多态&#xff08;polymorphism&#xff09;是面向对象编程中的一个重要概念&#xff0c;指的是同样的方法调用可以在不同的对象上产生不同的行为。在Python中&#xff0c;多态是通过方法的重写&#xff08;override&#x…

DTMF从2833到inband的方案

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 之前的文章中介绍过通过dialplan拨号计划配置的方法&#xff0c;实现2833到inband的转换&#xff0c;但是实际生产环境中的场景会更复杂&#xff0c;无法预先在dialplan中设置好相关参数和函数。 环境 CentOS 7.9 fr…

在Vue 3 + TypeScript + Vite 项目中安装和使用 SCSS

在Vue 3 TypeScript Vite 项目中安装和使用 SCSS 1、安装 SCSS 的相关依赖 npm install sass --save-dev2、配置 Vite 对于 Vue 3&#xff0c;Vite 已经内置了对 SCSS 的支持&#xff0c;通常不需要额外的配置。但是&#xff0c;如果需要自定义配置&#xff0c;可以在路径…