PyQt5遇到的一个坑 "ImportError: unable to find Qt5Core.dll on PATH" 及解决办法
最近再实现一个功能,主要是将自动化测试界面化
环境组合为:Windows 64bit + PyCharm + Python + PyQt5 + Pyinstaller + Inno Setup
PS C:\windows\system32> python -V
Python 3.7.0
PS C:\windows\system32> 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 files\python37\lib\site-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 "dou\dougui.py", line 14, in <module>
File "c:\program files\python37\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
File "site-packages\PyQt5\__init__.py", line 41, in <module>
File "site-packages\PyQt5\__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代码如下:
import os
import sys
import time
import ctypes
import subprocess
if hasattr(sys, 'frozen'):
7 os.environ['PATH'] = sys._MEIPASS + ";" + os.environ['PATH']
from datetime import datetime
from PyQt5 import QtCore, QtGui
from PyQt5.QtCore import QThread
from PyQt5.QtWidgets import QMainWindow
from PyQt5.QtWidgets import QApplication
from DouUI import Ui_MainWindow
然后重新打包再次去运行,果然正常了。
注:据说这个问题在新版本的PyQt5中(5.13.1),已经解决了。 升级到新版本就行了。但由于我是用的pyqt5-tools画的界面,把pyqt5升级上去后,pyqt5-tools就提示不兼容,所以就暂时先用这种方法解决这个问题,待后面pyqt5-tools有同步更新版本后再一起升级pyqt5和pyqt5-tools
PyQt5遇到的一个坑 "ImportError: unable to find Qt5Core.dll on PATH" 及解决办法的更多相关文章
- ImportError: unable to find Qt5Core.dll on PATH
一.实验环境 1.Windows7x32_SP1 2.python3.7.4 3.pyinstaller3.5 二.问题描述 1.一直都是在Windows10x64上使用pyinstaller打包ex ...
- git中的SSL certificate problem: unable to get local issuer certificate错误的解决办法
我们在使用git初始化一个项目时,尤其是通过git submodule update --init --remote初始化子模块时,可能会遇到下面这个错误: fatal: unable to acce ...
- moviepy音视频剪辑:TextClip不支持中文字符以及OSError: magick.exe: unable to read font 仿宋_GB2312.ttf的解决办法
☞ ░ 前往老猿Python博文目录 ░ 一.引言 moviepy对中文和多语言环境的支持做得并不好,包括中文文件名以及用于显示文字的TextClip就是典型的中文支持方面存在问题的.对于编解码的问题 ...
- Unable to resolve target 'android-8'类似错误的解决办法
导入android项目出现:出现Unable to resolve target 'android-8'错误及其他的一些解决办法 - 为梦想而飞 - 博客频道 - CSDN.NEThttp://blo ...
- 关于如何控制一个页面的Ajax读数据只读一次的简单解决办法!
例如:一个页面有一个按钮,点击的时候用ajax去后台获取数据,获取成功以后返回.下次再点击的时候就不要去获取数据了. 解决办法有很多: 1.用Get方法去读数据,会缓存. 2.用jquery的data ...
- Unable to find the wrapper "https"错误的解决办法
PHP.ini默认配置下,用file_get_contents读取https的链接,就会如下错误:Warning: fopen() [function.fopen]: Unable to find t ...
- Get-CrmSetting返回Unable to connect to the remote server的解决办法
摘要: 微软动态CRM专家罗勇 ,回复302或者20190125可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 在Dynam ...
- 一个页面tab标签切换,都有scroll事件的解决办法
当前页有多个tab,如果都有scroll事件, 先解绑$(window).off('scroll') 再执行scroll就不可以了,多个标签就不会互相干扰: 给你们个例子: //标签切换 $(' ...
- 用js控制 给一个input赋值之后,change事件不能捕获到,解决办法
你用js给input赋值后要调用change方法 下面是jquery的写法 $('input#3').val("50"); $('input#3').change(); 自己试试吧
随机推荐
- "Chrome的network中无法显示OPTIONS请求"的解决方案
目录 #事故现场 #分析及解决方法 #参考 #事故现场 在前端发送一个跨域请求的时候,要先发送个options请求,从而获知服务端是否允许该跨域请求. 跨域资源共享标准新增了一组 HTTP 首部字段, ...
- @Configuration@Bean
https://blog.csdn.net/u014199143/article/details/80692685 @Configuation等价于<Beans></Beans> ...
- 第十八次CSP认证游记 | 2019.12.15
CSP认证的考试是Haogod介绍的,取得一定成绩之后能有机会参加CCSP的分赛区和全国决赛.这次来参加认证要感谢老师的奔走为我们申请学校的报销,虽然最终因为这不是比赛所以报名费和差旅费下不来,但是老 ...
- 洛谷P1200 [USACO1.1]你的飞碟在这儿Your Ride Is Here
题目描述 众所周知,在每一个彗星后都有一只UFO.这些UFO时常来收集地球上的忠诚支持者.不幸的是,他们的飞碟每次出行都只能带上一组支持者.因此,他们要用一种聪明的方案让这些小组提前知道谁会被彗星带走 ...
- 记录 shell学习过程(11 ) shell 对输出流的处理
语法 awk [options] [BEGIN] {program} [END] [file] 常用命令选项 -F fs 指定描绘一行中数据字段的文件分隔符 默认为空格 -f file 指定读取程序 ...
- 手动运行jar包,指定配置文件
打包程序 mvn package cd target 指定参数运行 java -jar spring-boot-demo-0.0.1-SNAPSHOT.jar --spring.profile.act ...
- 04-Java基础语法【IDEA、方法】
重要内容记录: 01.IDE介绍 IDE(Integarted Development Environment)是Java集成开发环境,是一种专门用来提高Java开发效率的软件. 免费的IDE:Ecl ...
- C 库函数 - strcpy()
描述 C 库函数 char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest. 需要注意的是如果目标数组 dest 不够大,而源字符 ...
- 洛谷P1177 【模板】快速排序
https://www.luogu.org/problem/P1177 #include<bits/stdc++.h> using namespace std; int n; multis ...
- PP: Overviewing evolution patterns of egocentric networks by interactive construction of spatial layouts
Problem: get an overall picture of how ego-networks evolve is a common challenging task. Existing te ...