首先,先自学了pyqt5编写界面,编写的过程就下次再说吧。

编写完之后,文件夹中包括权重文件和两张图片。pyinstaller打包不能打包图片和权重文件,百度了好几圈终于知道了,/(ㄒoㄒ)/~~

然后这些图片如何处理呢,后来看到了大佬写的代码,把图片先转成py文件,再从py文件中解码出来。代码如下:

1.图片转py文件代码:

import base64def pic2py(picture_name):"""将图像文件转换为py文件:param picture_name::return:"""open_pic = open("%s" % picture_name, 'rb')b64str = base64.b64encode(open_pic.read())open_pic.close()# 注意这边b64str一定要加上.decode()write_data = 'img = "%s"' % b64str.decode()f = open('%s.py' % picture_name.replace('.', '_'), 'w+')f.write(write_data)f.close()if __name__ == '__main__':pics = ["background.tif", "single_back.tif"]for i in pics:pic2py(i)print("ok")

接下来,在你使用图片的py文件中加入如下:

from single_back_tif import img as single_back
from background_tif import img as background
tmp = open('single_back.tif', 'wb')  # 创建临时的文件
tmp.write(base64.b64decode(single_back))  ##把这个one图片解码出来,写入文件中去。
tmp.close()

ok,图片解决了~~~

接下来权重文件怎么办呢,首先在界面中加一个按键,自己选择权重文件路径进行加载(后来实验发现此方法不可行,可行方法在下面介绍)

比如,我定义了一个按键功能,如下:

def openpth(self):global openfile_name_pthopenfile_name_pth, _ = QFileDialog.getOpenFileName(self.open_pth, '选择权重文件', '/home/','pb_files(*.pth)')

终于把这些摸清楚了,往下走,就是生成exe文件~~

但是!又出现了问题,显示成功生成,但是打不开啊打不开。并且在dist文件夹下还有一个文件夹,这个文件夹中包含了一个exe文件,这种是不对的,dist文件夹下应该直接就是exe文件了(打包命令为:pyinstaller -F -w 主文件.py)也不知道哪里出错了,为了快点整好,我就换了一个anaconda环境,没想到真的直接在dist下生成了exe,但是!报错了,好多错,也不知道是哪里出错了,就使用排除法排除是否有安装包出错。

先新建一个hello.py

输入:

from PyQt5 import QtGui, QtWidgets
print('Hello Python!')

将hello.py打包,看是不是这里有错,发现没错。

然后再写入:

import cv2
from PyQt5 import QtGui, QtWidgets
print('Hello Python!')

再将hello.py打包,出错!

错误1:

File "site-packages/pkg_resources/__init__.py", line 86, in <module>
ModuleNotFoundError: No module named 'pkg_resources.py2_warn'
[30130] Failed to execute script pyi_rth_pkgres

解决方法:降低setuptool的版本,降低方法自行百度~~

错误2:

File "site-packages/cv2/__init__.py", line 5, in <module>
ImportError: numpy.core.multiarray failed to import
[32464] Failed to execute script hello

解决方法:降低numpy的版本,具体降低多少,大家试试吧,比你原先的降点试试~~

在这里,虽然顺利生成了exe,但在测试时,发现exe会闪退,说是有这个毛病:

AttributeError: 'list' object has no attribute 'seek'. You can only torch.load from a file that is seekable. Please pre-load the data into a buffer like io.BytesIO and try to load from it instead.
Aborted (core dumped)

但是,在加载权重文件进行下一步时,出现了闪退,为了解决这个问题,我还是重新加了路径:

在该文件夹下新建一个文件夹pth放置我的权重文件,然后在调用权重文件之前,加入如下命令:

if getattr(sys, 'frozen', False):cur_path = sys._MEIPASS
else:cur_path = os.path.dirname(__file__)
PATH_TO_FROZEN_PTH = os.path.join(cur_path, 'pth/039.pth')  # ui.openpb()

然后生成exe。再修改生成的.spec文件,修改为:

# -*- mode: python ; coding: utf-8 -*-

block_cipher = None

added_files = [('/home/1/GUI/mkgui/pth', 'pth')]
a = Analysis(['recog_vis.py'],
             pathex=['/home/1/_GUI/mkgui'],
             binaries=[],
             datas=added_files,
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          name='recog_vis',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          upx_exclude=[],
          runtime_tmpdir=None,
          console=True )

最后使用pyinstaller -F -w  **.spec 重新打包

至此,全部问题解决!感谢之前的博友的博客,看了好多,也不记得原先的链接,没法贴出来了,感谢大家!

——————————————————————我是分割线————————————————————————

如果不想这么麻烦,有一个很快捷的打包方法,就是用pyinstaller -D **.py

这样打包生成的话不是一个文件,而是很多依赖文件,

然后将所有的所需要的图片、py文件、权重文件等全放到dist文件夹下,即与可执行文件一个文件夹。

找到dist下相应的可执行文件,运行即可。

Linux系统使用pyinstaller打包pytorch模型疯狂踩坑记(含权重文件和图片等)相关推荐

  1. 在C++平台上部署PyTorch模型流程+踩坑实录

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 导读 本文主要讲解如何将pytorch的模型部署到c++平台上的模 ...

  2. 经验 | 在C++平台上部署PyTorch模型流程+踩坑实录

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨火星少女@知乎 来源丨https://zhuanlan ...

  3. 记录下使用阿里云的ces centos的linux系统搭建一个socks5代理步骤和踩坑过程

    文章目录 一.配置: 二.搭建步骤: 1.通过yum安装ss5 依赖包 2.安装ss5 ①.首先下载ss5 ②.解压安装: 3.启动: 4.修改配置: 5.修改端口号(默认1080,但是容易被人家扫描 ...

  4. 电脑如何安装双系统 Windows10 和fedora+成功安装+踩坑记-删除EFI文件

    – 安装介绍 博主采用的是Windows10 + fedora (linux) 模式 对于系统选择可按照自己来选,安装步骤大同小异,基本一样 fedora 使用的是官网提供的工具制作的镜像(推荐) – ...

  5. 用pyinstaller打包pytorch环境下的深度学习模型,实现通过exe程序实现界面显示模型的分类效果

    用pyinstaller打包pytorch环境下的深度学习模型,实现通过exe应用实现界面显示模型的分类效果 训练深度学习模型和界面显示,看我之前的博客,链接在下面: 通过残差网络实现CLFAR-10 ...

  6. 7代cpu能装虚拟xp系统吗_Intel 10代PC/笔记本安装Win7踩坑记 amp; 驱动分享

    免责声明:本文只是从技术角度进行讨论,主要因我自己的兴趣而引发测试.只代表个人观点,与任何组织机构无关. 目录 -  从赛扬G5900"亮机"CPU说起 -  10代Core Wi ...

  7. Pytorch中Dataloader踩坑:RuntimeError: DataLoader worker (pid(s) 6700, 10620) exited unexpectedly

    Pytorch中Dataloader踩坑 环境: 问题背景: 观察报错信息进行分析 根据分析进行修改尝试 总结 环境: 系统:windows10 Pytorch版本:1.5.1+cu101 问题背景: ...

  8. linux mint 无法联网_linux mint踩坑记

    linux mint踩坑记 linux 简介 1.linux mint 是基于debian的一个发行版,以友好的界面素称,开始菜单很像windows,风格以清新为主! 2.linux mint 分为两 ...

  9. 编写AIC工艺参数计算Matlab程序(疯狂踩坑)

    写编写AIC工艺参数计算Matlab程序(疯狂踩坑) Hello! 所用语言:Matlab 原理介绍 程序结构 踩的坑 1.变量定义: 2.定义方程组 3.解方程 整体代码如下: Hello! 写这篇 ...

最新文章

  1. C++ 名字重载、隐藏、覆盖
  2. 面向.NET开发人员的Dapr——分布式世界
  3. java 继承 子类 实例化_关于Java继承中父类和子类构造函数的问题
  4. 使用Pytorch处理多维特征的输入
  5. ❤『知识集锦』一文搞懂mysql索引!!(建议收藏)
  6. zabbix4.0添加mysql报警_Zabbix4.0系统告警“Zabbix server is not running”
  7. ECharts.js学习(二)动态数据绑定
  8. 2013-2-19 Android之ActionBar学习(转)
  9. _DataStructure_C_Impl:共享栈
  10. python汉字转到ascii码_python中ASCII码字符与int之间的转换方法
  11. Code a simple telnet client using sockets in python
  12. 快速浏览Silverlight3 beta:鸡肋一样的WritableBitmap
  13. oracle 整理表 碎片,Oracle数据库表空间碎片的查询和整理方法
  14. 月入3万多的程序员回老家, 被亲戚说不如县城卖手机月入2千的表弟
  15. linux 常见服务
  16. Pycharm新手使用教程(详解)
  17. PSINS开源代码初体验——航迹仿真与组合导航
  18. java jar manifest文件,java打包jar,以及manifest文件使用说明
  19. 【GAL中的标注弹窗功能——Renpy系列1】
  20. php-兄弟连(2014版)

热门文章

  1. Android Android-skin-support 换肤方案 原理讲解
  2. android 获取sdcard 禁用sdcard,Android获取内置sdcard跟外置sdcard路径
  3. 如何实现模拟量信号远距离无线传输?
  4. 希尔伯特变换、解析信号与复包络
  5. 如何使用WPS在服务器端WORD文件转PDF
  6. 不成熟的c语言练习2
  7. PaddlePaddle领航团 OpenCV基础知识点总结
  8. ES-查询相关和IK分词器
  9. ES基本查询语句教程
  10. 《缠中说禅108课》89:中阴阶段的具体分析