导入 PyQt5 时 DLL 加载失败
Posted
技术标签:
【中文标题】导入 PyQt5 时 DLL 加载失败【英文标题】:DLL load failed when importing PyQt5 【发布时间】:2017-03-17 17:14:23 【问题描述】:我已经在 windows 平台上安装了 PyQt5,并得到一个 importError: DLL load failed。
我已经使用命令安装了pyqt5
pip3 install pyqt5
Successfully installed pyqt5-5.8.1
我的Python版本如下:
Python 3.5.2 |Anaconda custom (64-bit)| (default, Jul 5 2016, 11:41:13) [MSC v.1900 64 bit (AMD64)] on win32
导入错误如下:
from PyQt5.QtWidgets import QApplication
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: DLL load failed: The specified module could not be found.
感谢和问候
【问题讨论】:
我已经卸载了这个并从conda install --channel https://conda.anaconda.org/bpentz pyqt5
安装了 5.6 并且没有收到错误。
它是否与pip list
一起显示?
是的,@Aaron
你有多个python实例吗?
用 conda 安装后(成功了?)打开解释器,导入 PyQt5,然后调用PyQt5.__file__
获取 conda 放置的位置。然后转到命令提示符,在使用 pip 安装 5.8.1 后,调用 pip show pyqt5
并将位置与您使用 conda 安装的 5.6 的位置进行比较。如果 /site-packages/ 的路径不同,则您有多个单独的安装。
【参考方案1】:
是因为缺少Python3.dll
(stub dll,重新导出了Python3x.dll
函数,所以一个版本的扩展可以适用于多个版本的python)。
如果您的 Python 发行版没有捆绑 python3.dll,您可以尝试使用 WinPython (https://winpython.github.io/) 中的一个。
至少 2017/04/01 版本应该有它。
1) 下载 WinPython(“零”版本就足够了;必须与您的 Python 相同的“主版本” - 3.5/3.6 - 和“位” - 32/64 - !!!)。
2) 解压到某个临时目录,取出 python3.dll 并将其粘贴到 python 目录中,靠近 python3x.dll。
3) 享受工作的 QT
【讨论】:
解决了我的 PyQt5 和 virtualenv (windows) 问题 - 使用 python3.5 安装中的 python3.dll (从 c:\python35 复制到 virtualenv\scripts\python3.dll 解决了这个问题) 这是对我有用的 PyQt5 v5.9 和 Anaconda 4.4 Python 3.6 的唯一答案。谢谢。 解决了我安装 Python3.5 Anaconda 的问题。 试过了,我的解释器崩溃并显示以下错误消息:当我尝试从 PyQt5 导入以验证它是否有效时,致命的 python 错误 pythreadstate_get no current【参考方案2】:我知道这个话题已经过时了,但我在最新版本的 PyQT 5.11 中也遇到了这个问题,但我已通过以下方式将其降级为 5.9:
pip install PyQT5==5.9
它已经解决了这个问题。
【讨论】:
【参考方案3】:如果您创建了 virtualenv,请检查 python3.dll
是否已复制到该 virtualenv 的 Scripts
目录中。可能只有 python35.dll
(或 python36.dll
等,取决于 Python 版本)被复制,在这种情况下,您会收到您遇到的错误。
【讨论】:
这个答案被证明是最正确的。就我而言,它还不够 Python3.dll。但除此之外,我还必须引入环境变量 # -- coding: utf-8 -- import os os.environ['QT_DEBUG_PLUGINS'] = '1' os.environ['QT_PLUGIN_PATH']=' C:\\K3-PKM-80\\Data\\PKM\\Proto\\site-packages\\PyQt5\Qt\plugins' import PyQt5 from PyQt5.QtWidgets import (QApplication,)【参考方案4】:就我而言,我有 Windows 10 32 位和 Python 3.7.2。 使用通过 pip 安装的 PyQt5 5.11 我得到了这个错误:
from PyQt5.QtWidgets import QApplication
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: DLL load failed: The specified module could not be found.
我注意到版本 5.11 没有 Qt DLL,所以我重新安装了一个早期版本
python -m pip uninstall PyQt5
和 python -m pip install PyQt5==5.10
永远不要使用 --no-cache-dir ,因为它会在安装 whl 文件时产生断言错误:
assert building_is_possible
assertion Error
我最终安装了 5.10 并出现以下错误:
qt.qpa.plugin: Could not load the Qt platform plugin "windows" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
在设置 QT_DEBUG_PLUGINS 甚至插件路径后:
set QT_DEBUG_PLUGINS=
set QT_PLUGIN_PATH=C:\Python37-32\Lib\site-packages\PyQt5\Qt\plugins
我意识到 dll qwindows.dll 是在它所在的正确路径中搜索的。
TL;DR:我用 UAC 提升重新运行了我的 python Qt 脚本,你猜怎么着,它起作用了!
【讨论】:
【参考方案5】:在使用 Python 3.6 的 Windows 10 中,我通过以下步骤修复了此错误:
1) 使用pip install pyqt5
安装 PyQt5
2) 正如this Microsoft website 中所述,我修改了我的 Visual Studio 2017 社区安装,启用了“Python 本机开发工具”
3) 将 python3.dll
从 C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64
复制到 C:\IntelPython3\Lib\site-packages\PyQt5
(检查您的目录)
【讨论】:
所以您怀疑 Visual Studio 是否破坏了原始链接?【参考方案6】:有时答案很简单。经历了很多头痛,因为在重新启动计算机之前应用程序运行平稳。然而,我只是对自己说,也许windows只是无法加载DLL模块?所以我又重新启动了我的电脑,然后又跑了。
完美运行。希望,它帮助了某人。
【讨论】:
我经常遇到 Windows / Python DLL 错误,这些错误在我重新启动时会修复。【参考方案7】:我遇到了同样的问题。
问题是我的 PySide2 版本与 PyQt5 版本不同(PySide2:5.12,PyQt5:5.14)。我将 PySide2 升级到 5.14,它对我有用。 (Python 3.6.5)
pip install PySide2==5.14
【讨论】:
【参考方案8】:我可以设法为我的 conda 环境修复它(conda 4.6.11,python 3.6)
我在这个问题上苦苦挣扎了很长时间,尝试了这里建议的所有修复。最后,我想通了!使用 pip3 install
代替 conda install
(我的 conda 似乎表现不佳),即使在 conda 环境中(pip3,不仅仅是 pip,pip 对我不起作用)。
我是怎么发现的?我pip3 install PyQt5==5.9.1
,它加载得很好,但是 DLL 加载失败的问题转移到了另一个库,比如 PIL,所以我用 pip3 做了同样的安装,然后我不得不用 pip3 重新安装每个库,现在它可以工作了。
【讨论】:
【参考方案9】:我找到了替代解决方案。
我使用的是 virtualenv,因为 PyCharm 为我做了一个,我不知道更好。我已经在那个 virtualenv 中安装了 PyQt5。
我切换到不使用 virtualenv,并在全局 Python 目录中安装了 PyQt5。这样就解决了。
【讨论】:
【参考方案10】:当您安装了 PyQt5 附带的 Anaconda 版本并且您使用 pip 安装版本掩盖了该软件包时,也会发生这种情况。卸载 pip 安装版本为我解决了问题。
【讨论】:
【参考方案11】:解决方案
-
关闭所有程序和编译器
打开 Anaconda Navigator 确保您已安装 pyqt 和 qtpy 模块(qtawesome 可选)
从 Anaconda Navigator Home 并启动 VS 代码,Jupyter 您最喜欢的编辑器
运行你的程序!-
这不是永久性修复,但它对我有用,希望它也对你有用 @Miloslav Raus 答案对我不起作用
【讨论】:
【参考方案12】:2020-06 更新
在带有闪亮的新 Python 3.8 64 和 pipenv install pyside2
的新生 Windows 10 64 Pro 上,我得到了诅咒的“DLL 加载失败”。双重验证的解决方案是对 Microsoft Visual C++ Runtime 的低估依赖。 https://aka.ms/vs/16/release/vc_redist.x64.exe
安装运行时后,5.13 到 5.15 版立即可用。
干杯!
【讨论】:
顺便说一句,5.12 版也是基于 Visual C++ 2015-2019 构建的。您无法降级到 5.12 版本来解决问题。【参考方案13】:您可以尝试从here 下载 64 位 Python 安装程序(Windows x86-64 可执行安装程序)。我正在使用PyQt5==5.10.1
。解决我的问题。
【讨论】:
【参考方案14】:如果您已经尝试了上述所有/大部分方法,但仍然无处可去。这是解决方案。
首先,通过检查 PyQt5 路径排除虚拟环境问题。 打开一个 Windows 终端,然后在下面输入
python
import PyQt5
PyQt5.__file__
现在您已经看到了默认 python 识别的 PyQt5 路径(__init__.py
之前),在文件浏览器中检查它,您应该会找到 PyQt5 目录。没关系,DLL导入错误不是这个问题!
如果DLL无法导入问题依然存在,那是因为你的Windows缺少更高级别的Visual C++运行环境。是的,PyQt5 for Windows 是基于 Visual C++ 2015-2019 构建的。只需下载该补丁并将其安装到您的 Windows 并重新启动,问题就解决了。
【讨论】:
【参考方案15】:在 Windows 10 中,它是内置的 python 3.7。而且看起来太简约了。
尝试卸载它并从 python.org 安装 python3
那么你应该为新的python重新安装pyqt5。
【讨论】:
【参考方案16】:最近在运行旧版本 Python 的机器上遇到了这个问题。解决方案是在进行任何其他导入之前导入每个 pyqt5 相关模块。
【讨论】:
【参考方案17】:我的 PyQt5 在 'from PyQt5 import QtGui' 上抛出了这个“找不到模块”错误
当我重新安装 PyQt5 时,Pip 抛出一个错误回溯,开始于:
ValueError:无法在包中找到资源 t64.exe pip._vendor.distlib快速检查 Python\lib\site-packages\pip_vendor\distlib\ 中的 t64.exe(错误消息中给出的路径,但带有点)确认没有 t64.exe 文件。
幸运的是,我存档了一个包含 t64.exe 文件的项目分发,所以我将它复制到我机器的 C:\Program Files\Python 目录并解决了问题。
注意:自从昨天 Windows 在启动时崩溃并且非常冒险的系统恢复破坏了我的 Python 安装后,我一直在努力解决这个问题。我清除了整个 Python 安装并至少重新安装了两次,每次都运行“pip --upgrade”。肯定有人想知道为什么 t64.exe 文件会从安装中删除——以及为什么重新安装没有恢复它...
【讨论】:
【参考方案18】:如果有人偶然发现此问题并想更改他们的软件...首先尝试这个对我有用的简单修复。在尝试其他任何操作之前先重新启动,然后再次尝试 XSeg 编辑。
【讨论】:
【参考方案19】:我尝试了这里的所有解决方案和其他地方的一些解决方案,但是其中任何一个都不适合我。对我有用的解决方案是安装更新的 Python 版本。
【讨论】:
以上是关于导入 PyQt5 时 DLL 加载失败的主要内容,如果未能解决你的问题,请参考以下文章
ImportError:导入 _remap 时 DLL 加载失败
ffpyplayer ImportError:导入播放器时DLL加载失败
“ImportError:导入 _openmp_helpers 时 DLL 加载失败”?