【踩坑后详细总结,多文件打包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还有很多的解决思路,如果大家有发现好的链接或者有好的想法都可以评论区留言。
  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值