pyqt5 的坑:ImportError: unable to find Qt5Core.dll on PATH 以及解决方案

之前说过一些 pyqt5 的案例开发,开发完成后,调试一切正常,还是很开心。然后用 pyinstaller 工具打包 mainWindow.py,更新成 3.5 版本的 pyinstaller 很贴心的会自动夹很多图标的配置文件,一键解决之前图标不显示的问题,打包也一切正常,美滋滋的上传应用,本以为就此结束了,谁知道一运行就崩了。

然后命令窗口执行 exe,报错提示 ImportError: unable to find Qt5Core.dll on PATH

这就奇怪了,看错误是说系统 path 路径下找不到 dll 库,以为是缺少路径了,于是就在系统环境变量 path 里把 pyqt5 的库目录给加进去,发现还是没用,没办法只能去网上寻找答案,几翻折腾下才明白原因。

贴一个原因贴https://github.com/pyinstaller/pyinstaller/issues/4293

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

import sys, os
if hasattr(sys, 'frozen'):
    os.environ['PATH'] = sys._MEIPASS + ";" + os.environ['PATH']
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtWidgets import *
from untitled import Ui_MainWindow
from PyQt5.QtGui import *

这样打包之后 exe 就能完美运行了, 这个贴估计大家也用不上,我就简单记录一下吧。