pyinstaller打包生成的exe运行报错:ImportError: unable to find Qt5Core.dll on PATH

pyinstaller打包pyqt生成的exe,直接运行exe文件时,程序闪退。发现报了个错:ImportError: unable to find Qt5Core.dll on PATH

问题及解决办法

程序闪退,第一反映肯定是有问题了,但是闪退没法跟踪问题,于是在命令行窗口执行exe,显示如下:

D:\>"D:\python project\demo\dist\demo.exe"
Traceback (most recent call last):
  File "demo.py", line 3, in <module>
  File "d:\python project\demo\venv\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
    exec(bytecode, module.__dict__)
  File "lib\site-packages\PyQt5\__init__.py", line 41, in <module>
  File "lib\site-packages\PyQt5\__init__.py", line 33, in find_qt
ImportError: unable to find Qt5Core.dll on PATH
[11632] Failed to execute script demo
 

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

具体就不详说了。总的来说呢,就是有的版本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就能完美运行了
 

发布了201 篇原创文章 · 获赞 48 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/wltsysterm/article/details/104634784