记录用python封装的第一个小程序

前言

我要封装的是前段时间复现的一个视频融合拼接的程序,现在我打算将他封装成exe程序,我在这里只记录一下我封装的过程,使用的是pyinstaller,具体的封装知识我就不多说了,可以参考我另一篇博客:将Python 程序封装成exe程序

环境准备:

首先进入自己的虚拟环境并激活

安装pyinstaller:

pip install pyinstaller    # 打包工具安装命令

准备开始打包:

进入需要打包程序的根目录文件夹(logo.ico图标文件提前放到根目录文件夹中),进入cmd命令行窗口,输入命令:

pyinstaller -D -i logo.ico main.py

打包结束后,根目录文件夹会中多出来一个dist的文件夹,打包好的程序就放在这个文件夹下面,但是应该会缺少一些东西,需要我们自己再添加:

可以看到封装的时候一些依赖库自动封装进来了

我们找到main.exe程序,这是我们的目标

我们双击main.exe发现会出现一个黑窗口并闪退,这里面的情况有以下几种:

1. 缺少依赖库:如果程序依赖其他库,打包时需要将依赖库一同打包,否则在运行时可能会找不到相应的库而闪退。可以使用 pyinstaller 等工具将所有依赖的库都打包到 exe 中。

2. 路径问题:在程序中使用相对路径或绝对路径时,可能会因为打包后的工作路径不同而导致找不到文件而闪退。可以使用 os.path 模块来处理路径问题,如使用 os.path.join() 拼接路径,os.path.abspath() 获取绝对路径等。

3. 异常捕获不足:在程序中可能存在没有完善的异常处理,当出现异常时程序直接退出导致闪退。可以在程序的关键部分增加 try...except 语句来捕获异常并处理。

4. 编码问题:如果代码中有非 ASCII 字符,打包后可能会出现编码问题导致闪退。可以在程序开头添加如下代码,指定编码方式:# -*- coding: utf-8 -*-

5. 操作系统兼容性问题:如果程序在 Windows 上开发,但在其他操作系统上运行,可能会出现闪退。可以在程序中处理操作系统兼容性问题,如使用 os 模块来处理文件路径、os.system() 来执行操作系统命令等。

6. 防病毒软件拦截:某些防病毒软件可能会误认为 exe 文件是恶意软件而拦截,导致程序无法运行。可以将程序添加到白名单或关闭防病毒软件后再运行。

如果以上方法都无法解决问题,可以使用 Python 自带的 logging 模块来记录程序运行过程中的错误信息,或使用 IDE 的 debugger 来调试程序。

具体是什么原因,我们可以在打包好的dist/main文件夹,使用cmd执行main.exe文件,这样窗口不会闪退

可以发现,我这里是由于相对路径问题没有找到对应的加载文件,因此我们直接将相关文件夹复制到main文件夹下

现在再双击main.exe运行

成功

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux操作系统基础

目录 计算机存储结构 冯.诺依曼结构 操作系统 在前几期我们学写了linux中常见的一些指令,本期我们将正式进行linux操作系统的学习。 计算机存储结构 要学习linux操作系统,我们就得先进行计算机存储结构的学习,要进行计算机存储结构的学…

电脑桌面便签在哪里设置?Win10电脑桌面便签设置指南

很多上班族在使用Win10电脑办公时,需要随时记录工作事项。例如,需要参加一场紧急会议但时间不确定,或者在电话沟通时需要记下重要的信息,甚至可能是需要快速记录工作计划、想法或者临时安排的场景。在这些情况下,如果有…

高精度恒流/恒压(CC/CV)原边反馈功率转换器

一、产品概述 PR6214是一款应用于小功率AC/DC充电器和电源适配器的高性能离线式功率开关转换器。PR6214采用PFM工作模式,使用原边反馈架构,无需次级反馈电路,因此省去了光耦和431,应用电路简单,降低了系统的成本和体积…

FEB(acwing)

文章目录 FEB题目描述输入格式输出格式数据范围输入样例1:输出样例1:输入样例2:输出样例2:输入样例3:输出样例3:代码题解情况1:xxxxxx:0,1,2,…&a…

css宽度适应内容

废话不多说,看如下demo,我需要将下面这个盒子的宽度变成内容自适应 方法有很多,如下 父元素设置display:flex 实现子元素宽度适应内容 如下给父元素设置flex能实现宽度自适应内容 <!DOCTYPE html><html lang"en"><head><meta charset"U…

在CentOS中,对静态HTTP服务的性能监控

在CentOS中&#xff0c;对静态HTTP服务的性能监控和日志管理是确保系统稳定运行和及时发现潜在问题的关键。以下是对这一主题的详细探讨。 性能监控 使用工具监控&#xff1a;top、htop、vmstat、iostat等工具可以用来监控CPU、内存、磁盘I/O等关键性能指标。这些工具可以实时…

pandas增强—数据表的非等式连接和条件连接。

Pandas 支持 equi-join&#xff0c;其中 join 中涉及的键被认为是相等的。这是通过 merge 和 join 函数实现的。但是&#xff0c;在某些情况下&#xff0c;所涉及的Key可能不相等;联接中还涉及一些其他逻辑条件、这称为非等式连接或不等式连接或者条件连接。 这种情况下使用pa…

C#MQTT编程02--报文格式

1、报文结构 在MQTT协议中&#xff0c;一个MQTT数据包由&#xff1a;固定头&#xff08;Fixed header&#xff09;、可变头&#xff08;Variable header&#xff09;、消息体&#xff08;Payload&#xff09;三部分构成。 注意2点&#xff1a; 1&#xff09;所有的数据包结构…

大模型实战营Day4 XTuner 大模型单卡低成本微调实战

本次讲师是一位从事算法工作的优秀贡献者。 一起来看看吧&#xff01; 本次课程内容主要有&#xff1a; 我将在此整理前三节的内容&#xff0c;第四节放在作业章节进行讲解&#xff1a; 同第三节的建立数据库中所提及到的&#xff0c;如果通用大模型在专用领域表现能力不强&…

GSTAE

缺失数据的流量预测:一种多任务学习方法 摘要:基于真实交通数据的交通速度预测是智能交通系统(ITS)中的一个经典问题。大多数现有的交通速度预测模型都是基于交通数据完整或具有罕见缺失值的假设而提出的。然而,由于各种人为和自然因素,在现实场景中收集的此类数据往往是…

matlab中any()函数用法

一、帮助文档中的介绍 B any(A) 沿着大小不等于 1 的数组 A 的第一维测试所有元素为非零数字还是逻辑值 1 (true)。实际上&#xff0c;any 是逻辑 OR 运算符的原生扩展。 二、解读 分两步走&#xff1a; ①确定维度&#xff1b;②确定运算规则 以下面二维数组为例 >>…

Rust-模式解构

match 首先&#xff0c;我们看看使用match的最简单的示例&#xff1a; exhaustive 有些时候我们不想把每种情况一一列出&#xff0c;可以用一个下划线来表达“除了列出来的那些之外的其他情况”&#xff1a; 下划线 下划线还能用在模式匹配的各种地方&#xff0c;用来表示…

设计模式—— 单例设计模式

单例设计模式 什么是单例模式 单例模式是一种对象创建型模式&#xff0c;使用单例模式&#xff0c;可以保证为一个类只生成唯一的实例对象。也就是说&#xff0c;在整个程序空间中&#xff0c;该类只存在一个实例对象。 为什么使用单例模式 在应用系统开发中&#xff0c;我…

【STM32】STM32学习笔记-USART串口手法HEX和文本数据包(29)

00. 目录 文章目录 00. 目录01. 串口简介02. 串口收发HEX数据包接线图03. 串口收发HEX数据包示例104. 串口收发HEX数据包示例205. 串口收发文本数据包接线图06. 串口收发文本数据包示例07. 程序示例下载08. 附录 01. 串口简介 串口通讯(Serial Communication)是一种设备间非常…

Go 知多少?

作为一名已接触过其他语言的开发&#xff0c;再去学习一门新语言可比之前轻松不少&#xff0c; 语言之间存在很多相似点&#xff0c;但是新语言也有自己的不同点&#xff0c;通常我会先了解它与其他语言常遇到的不同点有哪些&#xff0c; 使自己先能够上手编写基础程序&#…

正则表达式匹配 int unint uint16 类型最大值最小值的类型范围

以int16来举例 答案 ^([1-6]\d(?<!6[6-9])\d(?<!65[6-9])\d(?<!655[4-9])\d(?<!6553[6-9])|0|10{4}|[1-9]\d{0,3})$解析 int16的范围是 0~65535 。我们把它分解为 0 1~9999 10000 ~ 65535 。前两组很简单如下 0[1-9]\d{0,3}正则表达式 否定式向后查看 (?…

【LeetCode】19. 删除链表的倒数第 N 个结点(中等)——代码随想录算法训练营Day04

题目链接&#xff1a;19. 删除链表的倒数第 N 个结点 题目描述 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输入&a…

第133期 为什么一些场景下Oracle很难被替换掉(20240113)

数据库管理133期 2024-01-13 第133期 为什么一些场景下Oracle很难被替换掉&#xff08;20240113&#xff09;1 数据量2 架构3 应用改造4 Exadata和融合数据库总结 第133期 为什么一些场景下Oracle很难被替换掉&#xff08;20240113&#xff09; 今天在薛首席的群里&#xff0c…

HCIP-1

一、网络类型&#xff1a; 点到点 BMA&#xff1a;广播型多路访问 – 在一个MA网络中同时存在广播&#xff08;洪泛&#xff09;机制 NBMA&#xff1a;非广播型多路访问—在一个MA网络中&#xff0c;没有洪泛机制 MA&#xff1a;多路访问 在一个网段内&#xff0c;存在的节…

day-08 构造限制重复的字符串

思路 首先统计每个字符的个数&#xff0c;然后从后向前按照题意添加字符 解题方法 从后向前添加字符&#xff1a;1.当前字符个数<repeatLimit,直接添加 2.当前字符个数>repeatLimit,添加repeatLimit个&#xff0c;然后插入一个下一级字符 时间复杂度:O(n) 空间复杂度:…