PySide2:DLL加载失败:找不到指定的过程

Posted

技术标签:

【中文标题】PySide2:DLL加载失败:找不到指定的过程【英文标题】:PySide2: DLL load failed: The specified procedure could not be found 【发布时间】:2019-06-25 15:05:33 【问题描述】:

我正在尝试使用 Python 3.5.1 在 PySide2 中构建一个项目。以前,我在 PySide 中使用 Python 2.7 进行开发,但想升级到 Python 3。

我已经下载了 PySide2 (5.12.4) 并且还下载了 Qt5 (5.13.0)(如果有的话)。

但是,每当我尝试运行这个 hello world 程序时,我都会不断收到同样的错误,我不知道从哪里开始修复。

我认为这个问题与 Shiboken 有关,但我不知道如何解决它。

import sys
from PySide2.QtWidgets import QApplication, QDialog, QLineEdit, QPushButton

class Form(QDialog):
    def __init__(self, parent=None):
        super(Form, self).__init__(parent)
        self.setWindowTitle("My Form")

if __name__ == '__main__':
    # Create the Qt Application
    app = QApplication(sys.argv)
    # Create and show the form
    form = Form()
    form.show()
    # Run the main Qt loop
    sys.exit(app.exec_())

我的错误是:

Traceback (most recent call last):
  File "C:/Users/user1/Documents/program_folder/hello.py", line 2, in <module>
    from PySide2.QtWidgets import QApplication, QDialog, QLineEdit, QPushButton

  File "C:\Users\user1\venv\program_folder\lib\site-packages\PySide2\__init__.py", line 51, in <module>
    _setupQtDirectories()

  File "C:\Users\user1\venv\program_folder\lib\site-packages\PySide2\__init__.py", line 21, in _setupQtDirectories
    import shiboken2

  File "C:\Users\user1\venv\program_folder\lib\site-packages\shiboken2\__init__.py", line 27, in <module>
    from .shiboken2 import *

ImportError: DLL load failed: The specified procedure could not be found.

【问题讨论】:

安装python3的时候,安装的时候有没有把python添加到路径中? @Psychotechnopath 我的路径变量中有 python3 嗯,奇怪。问题是您无法从 Pyside2 模块导入。你的venv激活了吗? @Psychotechnopath 我的 venv 也被激活了,应该是和 3​​.5.1 的兼容性问题,所以我切换到了 3.7.3。感谢您的建议! 【参考方案1】:

更新:我最终使用 Python 3.7.3(最新版本)而不是 3.5.1,它现在可以与 PySide2 5.12.4 一起使用,这也是 PySide2 的最新版本

shiboken 包和我的 Python 版本肯定存在兼容性问题,所以使用两者的最新版本对我来说已经解决了问题。

【讨论】:

您应该将您的答案标记为已接受,以便未来的人知道如果遇到与您遇到的相同错误该怎么办【参考方案2】:

运行pip freeze 以获取有关已安装版本的信息,并确保PySide2shiboken2 的版本相同。

【讨论】:

【参考方案3】:

这也发生在我使用 Python 3.8 并从今天(5.14.0a1,12-15-19)安装 shiboken2 whl 时。使用 Python 3.7.5 让我摆脱了这个问题。

【讨论】:

似乎也发生在 Python3.8.0 和 PySide2 5.14.0 (19.12.2019) 的发布版本中。使用 Python3.8.1 和相同的 PySide 版本,它似乎可以工作,尽管会打印一些 Qt 内部错误消息。 (平台Win7x64)【参考方案4】:

这发生在我身上,python 3.7.5 和

PySide2==5.15.1
shiboken2==5.15.1

但是,情节扭曲:仅在 pytesting 时。正常执行脚本时,它们工作正常。

pytest==6.1.2

【讨论】:

【参考方案5】:

如果你使用 python 3.8.0

我遇到了同样的问题,但对我来说 PySide2 和 shiboken2 版本相同。 (所以这里接受的答案对我来说并不适用。)

我有 python 版本 3.8.0 64 位。 原来shiboken2与python 3.8.0不兼容,所以我尝试升级到python 3.8.7,问题就消失了。 (它在 python 3.9.x 上也可以正常工作,所以你也可以迁移到 python 3.9!)

注意:它也适用于 PySide6 和 shiboken6。

【讨论】:

以上是关于PySide2:DLL加载失败:找不到指定的过程的主要内容,如果未能解决你的问题,请参考以下文章

NumPy 库 ImportError:DLL 加载失败:找不到指定的过程

从sklearn.utils导入改组-DLL加载失败:找不到指定的过程

Windows 上构建的 PyQt:DLL 加载失败:找不到指定的过程

Pyinstaller ImportError:DLL加载失败:找不到指定的模块

sklearn:ImportError:DLL加载失败:找不到指定的模块

DLL加载失败:找不到指定的模块