PyQt5打包后运行出现 ImportError: unable to find Qt5Core.dll on PATH 两套解决方案

发布于 2020-09-08  460 次阅读



title: ''
type: categories
copyright: true
categories: Python
tags:

  • PyQt5
  • Pyinstaller
  • GUI
    comments: true
    abbrlink: 387f01e
    date: 2020-06-20 20:18:49
    updated: 2020-06-21

一、背景

最近一个项目采用PyQt5 5.13.0 进行开发,经过打包成exe可以执行。
环境:Windows 10 + python 3.7 + PyQt5 5.13.0 + tensorflow 1.14.0等。但是在此之前运行时会有这么一个错误:

ImportError: unable to find Qt5Core.dll on PATH


5.12.3 以及5.13.0好像都存在该问题:
问题

统一错误模板:

λ XXXXXX.exe
Traceback (most recent call last):
  File "xxxxxxui.py", line 4, in <module>
  File "c:usersremib.virtualenvsxxxxxxx-w7udp1ctlibsite-packagesPyInstallerloaderpyimod03_importers.py", line 627, in exec_module
    exec(bytecode, module.__dict__)
  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
[12876] Failed to execute script ui

注意:有时候运行失败是闪退的,如需要查看错误信息,可以先打包成在控制台运行,然后通过cmd、power shell等执行.exe文件

二、本机运行报错及解决办法

在PyQt创建初始化前加入如下代码:

if hasattr(sys, 'frozen'):
    os.environ['PATH'] = sys._MEIPASS + ";" + os.environ['PATH']

示例

三、在其他电脑上报错及解决办法


由于本人在此之前就用过PyQt5创建应用并解决了以上问题,但是最近的这个项目打包好发布后在相同运行环境下的机子又报错了,检查打包后项目的安装目录,发现文件是存在的:

经过一番测试与查找,发现打包后的PyQt5文件夹下,PyQt5/Qt/bin没有该文件。在Pyinstaller的GitHub项目下,issue有这么一项:

即需要手动将缺少的文件复制到打包后的PyQt5/Qt/bin目录下。查看该目录,在打包时手动加入缺少的文件:

缺少文件情况

添加文件(可只添加缺少的文件,为防止其他PyQt的库又找不到,可以都复制进去(库文件来源于打包后的目录。)

最后成功!

四、运行成功

五、项目其他文章链接