pyinstaller打包为.exe过程中的问题与解决方法

news2025/1/20 17:08:34

目录

  • 问题一:.exe文件过大
  • 问题二:pyinstaller与opencv-python版本不兼容
  • 问题三:打开文件时提示***.pyd文件已存在
  • 问题四:pyinstaller打包时提示UPX is not available.
  • 另:查看CUDA成功配置的方法

pyinsatller -F -w main.py 

问题一:.exe文件过大

打包命令:

pyinsatller -F -w main.py 

解决方法:
新建了一个虚拟环境,在其中重新安装了所需的库

安装虚拟环境依赖包:

pip install virtualenv
pip install virtualenvwrapper-win

找到自己python.exe所在位置,创建虚拟环境

mkvirtualenv -p="E:\\Python\python.exe" pyinenv

在需要打包的文件目录上输入cmd,使用如下命令切换到虚拟环境中

workon pyinenv

使用命令python main.py运行要打包的主程序,根据弹出缺少的模块依次下载。
注意:需要重新安装pyqt5和pyqt5-tools,以及pyinstaller等,这些运行过程中不会报错。

在下载的时候发现torch里面的cuda占的内存很大,索性在代码中取消了使用cuda加速的部分,并把torch-cuda删除,重新下了个没有cuda的torch、torchvision等

参考:解决打包exe文件过大问题

问题二:pyinstaller与opencv-python版本不兼容

打包完成后出现下面窗口。
在这里插入图片描述
解决:修改opencv-python的版本pip install opencv-python==4.5.1.48
我是用的python和pyinstaller的版本如下:

PyInstaller: 5.1
Python: 3.9.0
opencv-python:4.5.1.48

问题三:打开文件时提示***.pyd文件已存在

在这里插入图片描述
在a和p之间加入下面代码:

for b in a.binaries.copy():  # Traver the binaries.
    for d in a.datas:  #  Traverse the datas.
        if b[1].endswith(d[0]):  # If duplicate found.
            a.binaries.remove(b)  # Remove the duplicate.
            break

操作完之后换成这个打包命令:

pyinstaller main.spec

参考:Pyinstaller --onefile warning file already exists but should not
参考:WARNING: file already exists but should not: C:\Users\workAI\AppData\Local\Temp_MEI132522\torch_C
参考:【Python】Python打包exe报错makespec options not valid when a.spec file is given

问题四:pyinstaller打包时提示UPX is not available.

解决:
(1) 到官网 https://upx.github.io/ 下载了UPX(我的是Window 64版本), 下载下来是一个压缩包

(2) 解压得到 upx.exe文件

(3) 把exe文件拷贝到pyinstaller.exe目录下, 我的是 C:\Users\HASEE\Envs\pyinenv\Scripts

参考:pyinstaller打包时提示UPX is not available

最终,打包完成并能成功使用。(打包过程用了4分钟左右)
在这里插入图片描述
在这里插入图片描述

另:查看CUDA成功配置的方法

(1)在cmd里,注意是配置cuda的环境,我这里是在pytorch环境中,所以要先激活pytorch环境。
在这里插入图片描述
(2)在python文件中输入

import torch
print(torch.cuda.is_available())

返回True说明配置好了。

之前安装CUDA和pytorch的参考
参考:
1:CUDA版本与显卡驱动版本对照表(更新至2022.10.26 - CUDA11.8)
2:查看已经安装的CUDA的版本
3:win10+Anaconda+pytorch+CUDA11.1 详细安装指南
4:【Pytorch】pytorch安装(包含cuda详细安装教程)

y i , j = ∑ m = 0 h − 1 ∑ n = 0 w − 1 ∑ k = 0 c − 1 w m , n , k x i + m , j + n , k + b y_{i,j}=\sum_{m=0}^{h-1}\sum_{n=0}^{w-1}\sum_{k=0}^{c-1}w_{m,n,k}x_{i+m,j+n,k}+b yi,j=m=0h1n=0w1k=0c1wm,n,kxi+m,j+n,k+b

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

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

相关文章

瑞吉外卖 - 开发环境搭建(2)

某马瑞吉外卖单体架构项目完整开发文档,基于 Spring Boot 2.7.11 JDK 11。预计 5 月 20 日前更新完成,有需要的胖友记得一键三连,关注主页 “瑞吉外卖” 专栏获取最新文章。 相关资料:https://pan.baidu.com/s/1rO1Vytcp67mcw-PD…

网络编程启蒙

文章目录 局域网、广域网WAN口LAN口那么什么是局域网和广域网呢? IP地址IPV4动态规划ipNAT IPV6IPV6的普及IPV6的应用 端口号协议协议分层协议分层的好处 OSI物理层数据链路层网络层(全局)传输层负责应用层网络设备所在分层网络分层中的一组重…

mybatis-plus实现乐观锁和悲观锁

目录 定义 场景 乐观锁与悲观锁 模拟修改冲突数据库中增加商品表 乐观锁实现 悲观锁 定义 1)乐观锁 首先来看乐观锁,顾名思义,乐观锁就是持比较乐观态度的锁。就是在操作数据时非常乐观,认为别的线程不会同时修改数据&#x…

红旅在线语料库网站 开发笔记

桂林红色旅游资源在线语料库网站 (Guilin Red Culture Corpus)提供双语文本检索和分享功能。供英语、翻译相关专业的爱好者,学生和老师学习使用。 该网站是对BiCorpus开源项目的二次开发(已获得原作者授权)。 项目仓库:RedCorpu…

小米miui14更新公测

一人内测,全员公测,懂得都懂[滑稽] 必应搜索醉里博客http://202271.xyz?miui 1月份有一部分机型就要公测了,相关用户愿意等的可以再等等。 本篇介绍最简单粗暴的替换法,不管你刷没刷过机都可以用这个方法偷渡MIUI14 ★★★评论…

区间预测 | MATLAB实现QRCNN-GRU卷积门控循环单元分位数回归时间序列区间预测

区间预测 | MATLAB实现QRCNN-GRU卷积门控循环单元分位数回归时间序列区间预测 目录 区间预测 | MATLAB实现QRCNN-GRU卷积门控循环单元分位数回归时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 1.Matlab实现基于QRCNN-GRU分位数回归卷积门控循环…

可靠性设计:元器件、零部件、原材料的选择与控制

通常,一个产品由各种基础产品(包括各种元器件、零部件等)构成。由于元器件、零部件的数量、品种众多,所以他们的性能、可靠性、费用等参数对整个系统性能、可靠性、寿命周期费用等的影响极大。 原材料则是各种基础产品的基本功能赖以实现的基础&#xf…

储氢合金/金属氢化物床层有效导热系数的数学模型

最近看到一篇有关“储氢合金/金属氢化物床层有效导热系数的数学模型”的论文,文章DOI:10.1016/j.energy.2023.127085,文章提到的数学物理模型还算好理解一些,特意分享给各位感兴趣的大佬。 一、物理模型简图和假设 文章里&#xf…

数模之Apriori关联算法

一、问题 中医证型的关联规则挖掘 背景: 中医药治疗乳腺癌有着广泛的适应证和独特的优势。从整体出发,调整机体气血、阴阳、脏腑功能的平衡,根据不同的临床证候进行辨证论治。确定“先证而治”的方向:即后续证侯尚未出现之前&am…

前后端分离博客】学习笔记04 --- 文件上传-策略模式

一、思路 我们定义一个接口(就比如接下来要实现的文件上传接口)我们定义所需要实现的策略实现类 A、B、C、D(也就是项目中所使用的四种策略阿里云Oss上传、腾讯云Cos上传、七牛云Kodo上传、本地上传)我们通过策略上下文来调用策略…

基础IO(一)

基础IO(一) 1.文件基础概念2.C语言接口回顾3.系统接口4.文件系统调用5.三个标准6.输出缓冲区 🌟🌟hello,各位读者大大们你们好呀🌟🌟 🚀🚀系列专栏:【Linux的…

股票K线基础知识2

光头光脚阳线 光头光脚阳线形态与特征描述 光头光脚阳线表示股票的最高价与收盘价相同,最低价与开盘价一样。光头光脚阳线上下不带影线,表明从一开盘买方就积极进攻,中间也可能出现买方与卖方的斗争,但买方发挥了最大力量。始终占…

18.JAVA之三大框架Spring、IOC和DI、拦截器、MVC项目、Mybatis持久层、动态SQL、SSM

一、Spring框架 1.1概述 其中最核心的是:IoC控制反转、DI依赖注入、Bean工厂、SpringAOP面向切面编程、事务控制。 Spring是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。 SpringMVC框架用来接受浏览器的请求和给浏览器做出响应 Mybatis…

C++:设计一个线程安全的队列

文章目录 1. 目的2. 实现?验证!makefileQueue 类的 public 成员单元测试 3. 实现 Queue 类的方案 1. 目的 串行的程序只用到单个 CPU 核心, 希望加速整个程序, 考虑使用多线程加速。典型情况下可以找到生产者、消费者&#xff0c…

基于ESP或ESP8266 单通道Lorawan网关硬件制作

软件代码设计资料下载链接》》 基于 Comresult PCB 的单通道网关 介绍 这是 ESP8266 LoRa 网关的最新版本。基于 ESP8266 mcu 的 LoRa 网关在过去几年里有了很大的发展。您想构建一个小型网关并保持尽可能多的 GPIO 引脚可用,Hallard 板是无与伦比的。另一种解决…

C++多态练习题

文章目录 1.虚函数的调用过程2.虚函数例题例题一例题二例题三例题四例题四 1.虚函数的调用过程 从汇编上面来看: []代表指针解引用操作 1.op指向test对象的首地址(存放vptr),并存放在eax里面; 2.将eax所指之物(虚表…

使用不同的梯度下降法优化算法

本篇将使用以下几个梯度下降算法进行对比: 不使用任何的优化算法(即整批数据集作为一次迭代更新梯度,也叫batch梯度下降,BGD) mini-batch梯度下降法(Mini-batchGD) 使用具有动量的梯度下降算法&…

无标签背景图(负样本)的拼图代码

训练目标检测模型有个很令人头疼的问题,就是有些特征与要训练的特征较为相似的背景区域也被误检出来(作为本应不该检测出来的负样本却被误检出为正样本的FP)。 根据这一问题的解决办法,除了可以对正样本特征较为模糊或者有歧义的样…

Intel SGX学习笔记(2):用数组向Enclave传递5个数实现自增操作

写在前面 1、实现一个简单的Intel SGX的应用:非安全区定义初始化一个数组,数组里面存储5个数,然后向安全区(enclave)传入,在安全区中进行加减乘除,然后返回。 2、Intel SGX开发初学整体思路&a…

代码随想录算法训练营day39 | 62.不同路径,63. 不同路径 II

代码随想录算法训练营day39 | 62.不同路径,63. 不同路径 II 62.不同路径解法一:动态规划解法二:深度搜索(明天补充)解法三:数论(明天补充) 63. 不同路径 II解法一:动态规…