zoukankan      html  css  js  c++  java
  • PyQt5遇到的一个坑 "ImportError: unable to find Qt5Core.dll on PATH" 及解决办法

    最近再实现一个功能,主要是将自动化测试界面化

    环境组合为:Windows 64bit + PyCharm + Python + PyQt5 + Pyinstaller + Inno Setup

    PS C:windowssystem32> python -V
    Python 3.7.0
    PS C:windowssystem32> pip show pyqt5
    Name: PyQt5
    Version: 5.13.0
    Summary: Python bindings for the Qt cross platform UI and application toolkit
    Home-page: https://www.riverbankcomputing.com/software/pyqt/
    Author: Riverbank Computing Limited
    Author-email: info@riverbankcomputing.com
    License: GPL v3
    Location: c:program filespython37libsite-packages
    Requires: PyQt5-sip
    Required-by: pyqt5-tools

    主要的操作流程为:

    1、使用pyqt5-tools制作画面,再用pyuic5和pyrcc5生成对应的 .py文件

    2、实现界面中各个功能,并在Pycharm中运行,界面打开正常,各个功能也正常

    3、使用Pyinstaller进行打包(不是打包成一个exe文件,是打包成一个文件夹,所有的文件全部在里面)

    4、使用Inno Setup工具进行打包成一个单独的可执行exe文件

    5、在本机安装exe进行测试和在其它机器上安装测试查看功能是否正常

    下面讲第5步中在其它人电脑中安装后打开遇到的问题,本机未遇到过。遇到的问题就是界面一闪而过,根本就看不到报的是什么错,下面就介绍一种可以查看具体错误的方法:

    1、打开命令窗口,切换至程序所在目录

    2、直接输入 XXX.exe查看错误结果

    PS C:Program Files (x86)DOU> dougui
    dougui : 无法将“dougui”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径
    正确,然后再试一次。
    所在位置 行:1 字符: 1
    + dougui
    + ~~~~~~
        + CategoryInfo          : ObjectNotFound: (dougui:String) [], CommandNotFoundException
        + FullyQualifiedErrorId : CommandNotFoundException
    
    
    Suggestion [3,General]: 找不到命令 dougui,但它确实存在于当前位置。默认情况下,Windows PowerShell 不会从当前位置加载命令。如果信任此命令,请改为键入“.dougui”。有关详细信息,请参阅 "get-help about_Command_Precedence"。
    PS C:Program Files (x86)DOU> .dougui
    Traceback (most recent call last):
      File "doudougui.py", line 14, in <module>
      File "c:program filespython37libsite-packagesPyInstallerloaderpyimod03_importers.py", line 627, in exec_module
      File "site-packagesPyQt5\__init__.py", line 41, in <module>
      File "site-packagesPyQt5\__init__.py", line 33, in find_qt
    ImportError: unable to find Qt5Core.dll on PATH
    [12476] Failed to execute script dougui

    备注:从上面的错误来看有点让人费解,在本机中安装可以正常打开,只在其它人机器上打不开,但从错误来看打不到这个dll文件也有点奇怪,在安装目录下明明有这个文件,难道它不是从这个安装路径或者环境变量中去找对应的文件,于是从网上去搜索一下有没有类似的问题解决办法,说来也真巧,难道跟今天抢到过年回家的火车票有关系,很快就找到答案,如下两个链接:

    https://stackoverflow.com/questions/56949297/how-to-fix-importerror-unable-to-find-qt5core-dll-on-path-after-pyinstaller-b

    https://github.com/pyinstaller/pyinstaller/issues/4293

    里面描述的比较详细,具体就不详说了。总的来说呢,就是有的版本pyqt5库对系统变量的加载存在bug,具体原因只有官方才能解释了,咱也没法管了,对有bug的版本库提供一种解决办法就是,在主程序中pyqt5库import之前就对系统变量进行手动设置,import代码如下:

     1 import os
     2 import sys
     3 import time
     4 import ctypes
     5 import subprocess
     6 if hasattr(sys, 'frozen'):
     7     os.environ['PATH'] = sys._MEIPASS + ";" + os.environ['PATH']
     8 from datetime import datetime
     9 from PyQt5 import QtCore, QtGui
    10 from PyQt5.QtCore import QThread
    11 from PyQt5.QtWidgets import QMainWindow
    12 from PyQt5.QtWidgets import QApplication
    13 from DouUI import Ui_MainWindow

    然后重新打包再次去运行,果然正常了。

    注:据说这个问题在新版本的PyQt5中(5.13.1),已经解决了。 升级到新版本就行了。但由于我是用的pyqt5-tools画的界面,把pyqt5升级上去后,pyqt5-tools就提示不兼容,所以就暂时先用这种方法解决这个问题,待后面pyqt5-tools有同步更新版本后再一起升级pyqt5和pyqt5-tools

  • 相关阅读:
    11.10
    11.9
    11.8 总结
    11.7
    11.6
    日报10.6
    日报10.5
    每周总结-3
    日报10.4
    日报10.2
  • 原文地址:https://www.cnblogs.com/aziji/p/12084343.html
Copyright © 2011-2022 走看看