导入 PyQt5 时 DLL 加载失败

DLL load failed when importing PyQt5

我已经在 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.

感谢和问候

是因为缺少Python3.dll(存根dll,重新导出Python3x.dll函数,所以一个版本的扩展可以适用于python的多个版本)。

如果您的 Python 发行版没有捆绑 python3.dll,您可以尝试使用 WinPython (https://winpython.github.io/)。

至少2017/04/01版本应该有。

1) 下载 WinPython('Zero' 版本足够;必须与 "main version" - 3.5/3.6 - 和 "bitness" - 32/64 - 相同 Python !!!).

2) 解压缩到某个临时目录,将 python3.dll 放入 python 目录,在 python3x.dll.

旁边

3) 享受工作 QT

如果您创建了 virtualenv,请检查 python3.dll 是否已复制到该 virtualenv 的 Scripts 目录中。可能只有 python35.dll(或 python36.dll 等,取决于 Python 版本)被复制,在这种情况下你会得到你得到的错误。

我找到了替代修复方法。

我使用的是 virtualenv,因为 PyCharm 已经为我制作了一个,但我并不了解。我已经在那个 virtualenv 中安装了 PyQt5。

我切换到不使用 virtualenv,并在全局 Python 目录中安装了 PyQt5。那修好了。

我知道这个话题已经过时了,但我在使用最新版本的 PyQT 5.11 时也遇到过这个问题,但我已通过以下方式将其降级为 5.9:

pip install PyQT5==5.9

它已经解决了这个问题。

在 Windows 10 中使用 Python 3.6 我通过以下步骤修复了这个错误:

1) 安装 PyQt5 pip install pyqt5

2) 如 this Microsoft website 中所述,我修改了我的 Visual Studio 2017 社区安装启用 "Python native development tools"

3) 将 python3.dllC:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64 复制到 C:\IntelPython3\Lib\site-packages\PyQt5(检查您的目录)

我尝试了这里的所有解决方案和其他地方的一些解决方案,但是其中任何一个都不适合我。对我有用的解决方案是 安装更新的 Python 版本

您可以尝试从 here 下载 64 位 Python 安装程序(Windows x86-64 可执行安装程序)。我正在使用 PyQt5==5.10.1。解决我的问题。

在我的例子中,我有 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 PyQt5python -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: 我重新运行 我的 python Qt 脚本与 UAC 提升,你猜怎么着, 它起作用了 !

当你安装了 PyQt5 附带的 Anaconda 版本并且你用 pip 安装版本掩盖了该包时,也会发生这种情况。卸载 pip 安装版本为我解决了问题。

解决方案

  1. 关闭所有程序和编译器
  2. 打开 Anaconda Navigator 确保你已经安装了 pyqt 和 qtpy 模块(qtawesome 可选)
  3. 从 Anaconda Navigator Home 启动 VS code,Jupyter 你最喜欢的编辑器
  4. 运行你的程序!-

这不是永久性修复,但它对我有用希望它对你也有用答案对我不起作用

有时候答案很简单。经历了很多令人头疼的事情,因为在重新启动我的计算机之前应用程序 运行 很顺利。然而,我只是对自己说,也许 windows 只是无法加载 DLL 模块?所以我又重新启动了我的电脑和运行。

工作完美。希望,它帮助了某人。

我遇到了同样的问题。

问题是我的 PySide2 版本与 PyQt5 版本不同(PySide2:5.12,PyQt5:5.14)。我将 PySide2 升级到 5.14,它对我有用。 (Python 3.6.5)

pip install PySide2==5.14

更新 2020-06

在新生儿 Windows 10 64 Pro 和闪亮的新 Python 3.8 64 和 pipenv install pyside2 我得到了诅咒 "DLL load failed"。双重验证的解决方案是对 Microsoft Visual C++ Runtime 的低估依赖。 https://aka.ms/vs/16/release/vc_redist.x64.exe

提供了一个万无一失的安装程序

版本 5.13 到 5.15 运行 运行时安装后即开即用。

干杯!

我可以设法为我的 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 重新安装每个库,现在它可以工作了.

如果您已尝试 all/most 以上方法,但仍然找不到任何地方。这是解决方案。

首先通过检查PyQt5路径排除虚拟环境问题。 打开 Windows 终端,然后在下面输入

python
import PyQt5
PyQt5.__file__

既然您已经看到默认 python 识别的 PyQt5 路径(在 __init__.py 之前),请在文件浏览器中检查它,您应该可以找到 PyQt5 目录。没问题,DLL导入错误不是这个问题!

如果仍然无法导入DLL,那是因为您的Windows缺少更高的Visual C++运行环境。是的,用于 Windows 的 PyQt5 是基于 Visual C++ 2015-2019 构建的。 只需下载该补丁并将其安装到您的 Windows 并重新启动,问题就解决了。

在 Windows 10 中,它内置于 python 3.7。而且看起来太简约了。

尝试卸载它并从 python.org

安装 python3

那么你应该为新的 python.

重新安装 pyqt5

最近在机器 运行 的旧版本 Python 上遇到了这个问题。解决方案是在进行任何其他导入之前导入每个 pyqt5 相关模块。

我的 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 文件从安装中删除——以及为什么重新安装没有恢复它...

如果有人偶然发现这个问题并想更改他们的软件...首先尝试这个对我有用的简单修复。在尝试任何其他操作之前先重新启动,然后再次尝试 XSeg 编辑。

2022 年更新:

查看有关 DLL 问题的评论后,none 是最近的,我碰巧弄清楚了为什么这个问题仍然存在。编写 PyQt5 时的当前版本是 5.15.6。 5.15.6、5.15.5 和 5.15.4 给出了 DLL 问题。不知道如何修复它,而是降级到 5.15.3。

实际上我从未升级过 PyQt5,因为我可能在其他地方遇到过类似的问题。但是当我安装 PyQtWebEngine 时,它​​会自动升级到最新的 PyQt5,并且至少需要 PyQt 版本 5.15.4(这会导致 DLL 错误)。我解决第二个问题的方法是从 PyQtWebEngine-5.15.5 到 PyQtWebEngine-5.15.3.

总结给那些需要的人:

  1. PyQt5 工作:

pip 安装 PyQt5==5.15.3

  1. PyQt5 和 PyQtWebEngine

pip 安装 PyQt5==5.15.3

pip安装PyQtWebEngine==5.15.3

我有同样的错误。我刚刚重新启动了我的电脑并再次尝试 运行 代码并且 运行 完美。

我知道问题是针对 PyQT5 的,但这是在 PyQT6 中搜索相同问题时排在首位的 post。所以这个答案适用于任何在 PyQT6 中寻找解决方案的人。

我发现问题发生在使用PyQT6 6.1.0版本时。将 PyQT6 升级到最新版本(撰写此答案时为 6.3.0)可解决此问题。我注意到我的项目依赖于 PyQT6-Tools,它将 PyQT6 的安装从 6.3.0 -> 6.1.0 降级。

我的解决方案是从 PyQT6-Tools 中删除项目依赖项并重新安装 PyQT6,这将再次安装最新版本。另一种方法是安装 PyQT6 然后安装 PyQT6-Tools 然后升级 PyQT6。我检查了 QTDesigner,它工作正常,不确定 pyuic。