记录用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.mzph.cn/news/619886.shtml

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

相关文章

NLP技术在搜索推荐场景中的应用

NLP技术在搜索推荐中的应用非常广泛,例如在搜索广告的CTR预估模型中,NLP技术可以从语义角度提取一些对CTR预测有效的信息;在搜索场景中,也经常需要使用NLP技术确定展现的物料与搜索query的相关性,过滤掉相关性较差的物…

HashMap 为什么线程不安全?

如果你现在需要准备面试,可以关注我的公众号:”Tom聊架构“,回复暗号:”578“,领取一份我整理的50W字面试宝典,可以帮助你提高80%的面试通过率,价值很高!! JDK1.7 及之前…

函数指针和回调函数 以及指针函数

函数指针(Function Pointer): 定义: 函数指针是指向函数的指针,它存储了函数的地址。函数的二制制代码存放在内存四区中的代码段,函数的地址它在内存中的开始地址。如果把函数的地址作为参数,就…

力扣2182.构造限制重复的字符串

思路:先记录每个字符的出现次数,构建一个新字符串,从尾取字符,每取一个该字符个数-1,若该字符已经取到有repeatLimit个,则递归取次大的字符,并对应字符个数-1,若没有次大字符了&…

Elasticsearch基础篇(七):分片大小修改和路由分配规则

Elasticsearch基础篇(七):分片大小修改和路由分配规则1. 分片1.1 主分片(Primary Shard)1.2 副本分片(Replica Shard)1.3 分片路由(Routing Shard) 2. 分片分配的基本策略3. 分片写入验证3.1 数…

2024年前端最新面试题-vue3(持续更新中)

文章目录 前言正文什么是 MVVC什么是 MVVM什么是 SPA什么是SFC为什么 data 选项是一个函数Vue 组件通讯(传值)有哪些方式Vue 的生命周期方法有哪些如何理解 Vue 的单项数据流如何理解 Vue 的双向数据绑定Vue3的响应式原理是什么介绍一下 Vue 的虚拟 DOM介…

设计模式-- 3.适配器模式

适配器模式 将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 角色和职责 请求者(client):客户端角色,需要使用适配器的对象,不需要关心适配器内部的实现,…

IEEE论文LaTeX模板解析(十一)| 尾页栏目均衡(Last Page Column Equalization)

本文收录于专栏:IEEE论文LaTeX模板解析,本专栏将会围绕IEEE论文LaTeX模板解析持续更新。欢迎点赞收藏关注! 文章目录 IEEE 在最后一页平衡了各栏的长度。这种平衡是粗略的,因为参考文献或 IEEE 传记条目通常不会断开,…

Origin 或 Referer 的关系和区别

Origin 或 Referer 的关系和区别 Origin 和 Referer 都可以服务端用来做来源验证,来防止 csrf 攻击,都是浏览器自动带在请求头的但是,可以通过 Referrer Policy 来禁止请求携带 referer,【请求头增加字段 Referrer-Policy: no-ref…

TF-IDF(词频-逆文档频率)

文章目录 高频词只能说明词汇在评论中出现的频率高,但并不能说明这个词汇的重要性。利用关键词提取可以弥补这一不足,关键词提取是一种自动化的文本处理技术,它可以从一篇文章中自动抽取出最能代表文章主题和内容的若干个词语或短语。通常情况…

常用的检测数据异常值方式,以及异常数据如何处理!!

清除数据异常值 1.箱线图检测数据异常值方法2.3σ原则检测数据异常值方法3. 异常数据处理方式:总结(小白看看就行) 1.箱线图检测数据异常值方法 箱线图检测:箱线图是一种常用的异常值检测方法,它以数据的分位数为基础…

常见的加密算法

加密算法 AES 高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图: RSA RSA 加密算法是一种典型的非对称加密算法&am…

正则表达式2 常见模式

继上次的正则表达式速攻1/2-CSDN博客 还有一些常见的匹配模式可以直接使用 电子邮箱 xxxxxx.域名 的情况 \b[A-Za-z0-9._%-][A-Za-z0-9.-]\.[A-Z|a-z]{2,}\bhttp或者https网址 的情况 http[s]?://(?:[a-zA-Z]|[0-9]|[$-_.&]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F…

DRL入门

目录 1. DRL的核心概念 2. 算法分类 1、免模型学习和有模型学习(理不理解所处的环境) 2、基于策略(概率)的方法和基于价值的方法 3、回合更新和单步更新: 4、在线学习和离线学习 文献 1. Deep Reinforcement L…

Java后端开发——Mybatis实验

文章目录 Java后端开发——Mybatis实验一、MyBatis入门程序1.创建工程2.引入相关依赖3.数据库准备4.编写数据库连接信息配置文件5.创建POJO实体6.编写核心配置文件和映射文件 二、MyBatis案例:员工管理系统1.在mybatis数据库中创建employee表2.创建持久化类Employee…

嵌套的CMake

hehedalinux:~/Linux/multi-v1$ tree . ├── calc │ ├── add.cpp │ ├── CMakeLists.txt │ ├── div.cpp │ ├── mult.cpp │ └── sub.cpp ├── CMakeLists.txt ├── include │ ├── calc.h │ └── sort.h ├── sort │ ├── …

Java language programming:设计一个矩形类Rectangle

&#xff08;源于PTA&#xff09; 题目&#xff1a;设计一个名为Rectangle的类表示矩形。 这个类包括&#xff1a; <1>.两个名为width和height的double型数据域&#xff0c;它们分别表示矩形的宽和高。width和height的默认值都为1。 <2>.一个无参构造方法。 <3&…

网络安全工具大全

通用工具 工具类型 工具地址 更新时间 内网扫描 https://github.com/shadow1ng/fscan 2022-07-06 哥斯拉Webshell管理 https://github.com/BeichenDream/Godzilla 2021-11-01 ARL 资产侦察灯塔 https://github.com/TophantTechnology/ARL 2022-08-25 aliyun-accesskey-Too…

基于面向对象编程,C++实现单链表

链表&#xff1a;在内存空间中是非连续存储 组成&#xff1a;链表是由一个个节点组成的&#xff0c;每个节点都包含两个元素&#xff1a;数据和指针 节点头文件&#xff1a; 建立一个ListNode.h头文件 #pragma once class ListNode { public:int value;ListNode* next;Lis…

杭州经典爬山路线推荐

杭州经典爬山路线推荐爬山地图 【东岳村】路线一&#xff1a;东岳村(上山)——美人峰——龙门山——石人岭——天门山——石门山——棋盘山——天马山——茶叶博物馆&#xff08;下山&#xff09; 【林海亭】路线一&#xff1a;林海亭&#xff08;上山&#xff09;——唐家坞—…