IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 【踩坑后详细总结,多文件打包pyside2界面为.exe问题】 -> 正文阅读

[Python知识库]【踩坑后详细总结,多文件打包pyside2界面为.exe问题】

一、前言

  • 最近为了做个数据处理的程序,考虑到在后面其他操作人员在任何电脑都能进行试验数据处理。因此需要将数据处理程序嵌入到界面中。使用者只需要运行.exe文件就能进行数据处理。
  • 之前有了解过python版本的PyQt5以及PySide2以及C++的Qt,但是都没有系统去学,为了在短时间内完成一个界面,我在B站找了白月黑羽.的一个视频,里面刚好有一个例子,于是我就直接用该程序进行了改进。大家可以看一下很容易理解,我当时也就看了前三个视频。然后直接用这个程序。
  • 写完程序之后就是需要打包,因为在以后的项目工程中,程序会进行模块化,一个项目会有很多文件,因为我这个程序相对比较简单,所以我只是用了两个文件,一个是Window.py,也就是窗口我呢见,另一个就是DataProces.py就是数据处理文件。在之前的打包中,习惯用的是pyinstaller -F -w name.py,这种是单文件打包。对于多文件,以及Pyside2这个特殊的包不适用本方法。下面就跟大家说一下我遇到过的一些问题。

二、踩坑报错之路

1.No Module named ‘PySide2’

  • 说明:本文有两个文件,其中一个是Window.py另一个是DataProcess.py 其中Window.py调用DataProcess.py模块。我一开始使用的打包命令时单文件打包。因为我之前打包过类似的小程序(不含PySide2库),改指令可以用,但是对于本文的情况不能用。
pyinstaller -F -w -i name.ico  Name.py


# 解释:-F 表示单文件打包
# -w:不带黑色弹窗
# -i name.ico 打包后的.exe软件显示图标。
# Name.py:就是我们需要打包的py文件
  • 如果大家打包.exe对软件图标有要求,需要利用这个链接将图片转换为.ico格式,建议用网站转换,因为之前踩过坑,如果是自己手动更改后缀名会出现打包报错。同时直接复制粘贴的图片可能不是正方形的,对于长宽不相等的图标也会报错。这是个人的踩坑经验,大家可以借鉴一下。
  • ico格式转换网址:迅捷PDF转换器.

2.This application failed to start because no Qt platform plugin could be initialized.

  • 但是我是采用网上一些多文件打包的文章,打包后运行.exe显示入如下图,后面查找了解决方法,说是把某个位置的这三个文件qminimal.dll,qoffscreen.dll,qwindows.dll复制到Anaconda3\Library\plugins\platformsxxx\Anaconda3\Library\plugins\platforms文件下,这里就不详细介绍,有兴趣的可以点击参考连接。

  • 当时参考的连接,但是最后还是没能解决问题.

3. ModuleNotFoundError: No module named PySide2 [38096] Failed to execute script. ’ Window’ due to unhandled exception.

  • 同时使打包过程中的一个问题,其中关于PySide2打包.exe的时候,最常见的一个问题就是显示没用PySide2这个模块。用过网上一些方法,就是在Window.spec文件中手动更改 hiddenimports=[],参数,改为 hiddenimports=[‘PySide2’],具体参考连接,大家可以参考这个文章,讲的挺不错的,但是还是不能解决我这个问题。 文章链接.

4.其他报错

  • 其他的报错还有一些偏门的,也找了相关的文章,但是还是解决不了,所以这里就不贴上来了。个人觉得最重要的使关于PySide2 模块的打包以及如果多文件打包,不慌呀,下面就开始干货内容。(其实整篇都是干货,喜欢的可以点赞收藏,防止遇到问题找不到我)

三、解决问题的最终方法

3.1参考链接:

3.2 步骤1:在主程序中添加以下代码

   

   dirname = os.path.dirname(PySide2.__file__)
   plugin_path = os.path.join(dirname, 'plugins', 'platforms')
   os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = plugin_path

3.3 步骤2 找到PySide2 库的上层目录

3.4步骤3 输出打包指令

pyinstaller -F -w -i  Background.ico  Window.py -p DataProcess.py -p C:\Users\19446\Anaconda3\envs\qt\Lib\site-packages


"""
参数解释:
-w:不带黑框
-i Background.ico : .exe软件需要显示图标为Background.ico 图片
Window.py:打包主程序
-p DataProcess.py: 打包的第二个程序,打包的第二个文件前需要加上参数-p
p C:\Users\19446\Anaconda3\envs\qt\Lib\site-packages:就是步骤2中获得的PySide2库的打包,这样打包的话就不会报错显示没用PySide2库了,而且打包后.exe也不大。
"""

3.5 打包结果

  • 打包后会生成几个文件夹,我们需要的.exe软件在dist中,同时将用到的图标都放在指定的位置就能直接运行了。

  • 将需要的文件以及要用到的图标进行打包整理就可以直接用了。图标的设置路径得根据程序的设置位置来定,我这里都是使用相对路径的当前目录。

  • 运行结果,因为涉及到界面以及数据,所以运行结果我采用一个最简单的界面进行展示。

四、总结

  • 其实我个人还是不建议用PySide2来做界面,因为遇到问题可以查找的资料很少,得不断试错,这考验一个人的解决问题能力。需要不断去尝试锻炼。个人还是建议用主流的PyQt5、或者C++版本的Qt,在工业上项目落地基本都是C++编写的界面,PyQt5的话适合用来科研研发,其实Python就是,因为算法实现方便,很多算法的实现都是用Python,然后再进行C++部署。
  • 这是我PySide2打包遇到问题的一个详细总结,因为我找Bug发现资料不多,所以我解决问题之后就打算总结一下,方便后来人的一个问题解决。
  • 文章因为篇幅问题存在一些瑕疵,可能这个Bug还有很多的解决思路,如果大家有发现好的链接或者有好的想法都可以评论区留言。
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-03-06 12:58:23  更:2022-03-06 13:00:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 22:43:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码