为 Python 3.8、Windows 安装 PySide2

Posted

技术标签:

【中文标题】为 Python 3.8、Windows 安装 PySide2【英文标题】:Installing PySide2 for Python 3.8, Windows 【发布时间】:2019-12-13 18:37:49 【问题描述】:

我想在我的 Windows 10 Python 3.8 版上安装 PySide2,尽管尚未发布***。

当然,我首先尝试了pip install --python-version 3.7 命令,看看是否简单地获取所有内容,但对于以前的 Python 版本,就可以了。没用。

所以我在我的机器上安装了QT 以及手动构建它所需的所有依赖项和工具。我已经取得了相当大的进步,成功地构建了shiboken2,但未能构建PySide2 本身。

我不断遇到的错误是在尝试导入 shiboken2 时缺少 DLL-s。不幸的是,输出相当无用,因为它实际上并没有告诉我缺少哪些,而且我自己也无法弄清楚。

手动构建的错误如下(C:\PySide2\pyside-setup\pyside3_build\py3.8-qt5.12.6-32bit-release\pyside2目录下的nmake命令):

Scanning dependencies of target QtCore_pyi
Traceback (most recent call last):
  File "C:/PySide2/pyside-setup/sources/pyside2/PySide2/QtCore/../support/generate_pyi.py", line 294, in <module>
    generate_all_pyi(outpath, options=options)
  File "C:/PySide2/pyside-setup/sources/pyside2/PySide2/QtCore/../support/generate_pyi.py", line 251, in generate_all_pyi
    import PySide2
  File "C:\PySide2\pyside-setup\pyside3_build\py3.8-qt5.12.6-32bit-release\pyside2\PySide2\__init__.py", line 51, in <module>
    _setupQtDirectories()
  File "C:\PySide2\pyside-setup\pyside3_build\py3.8-qt5.12.6-32bit-release\pyside2\PySide2\__init__.py", line 21, in _setupQtDirectories
    import shiboken2
ImportError: DLL load failed while importing shiboken2: The specified module could not be found.

我通常会耐心等待***发布,但我找不到任何有关 Windows 进度的信息,而且我知道该库可用于其他平台上的 Python3.8。

您是否推荐任何步骤来找出我的构建有什么问题(我通常会使用pip install 代替PySide2,所以这对我来说是全新的),或者知道如何直接解决问题?我知道shiboken2.cp38-win32.pyd 在那里,我也将它包含在我的PATH 环境变量中以防万一,shiboken2.cp38-win32.dll 也是如此 - 但这些似乎不是丢失的文件。

注意:这应该是超级用户问题 (?)

【问题讨论】:

Python3.8甚至不支持PySide2,5.14版本才支持,所以建议你使用小Python版本 @eyllanesc 这是个好消息,谢谢!你能告诉我我通常应该在哪里寻找这样的信息,包括什么时候发布?我知道有多个跟踪器和一个博客。不幸的是,我必须坚持使用 3.8,但我很乐意等待更长时间。 见bugreports.qt.io/projects/PYSIDE/issues/PYSIDE-1154。今天 Qt 5.14 发布了,所以我推测在接下来的几周内已经有 PySide2 5.14 版本。我建议这几周使用 python3.7,当新版本发布时,您只需携带一些最小功能(python3.8 中引入的更改很小) 例如,如果你可以用python3.8手动编译pyside2,那么当你想继承一个QObject(大多数Qt类都是QObjects)时,你仍然会有一个严重的bug,见***.com/a/58904586/6622587 【参考方案1】:

在 Windows 平台上简单的pip install PySide2 是不够的,您应该进行安装后步骤。作为 PySide2 安装的一部分,您获得了 pywin32_postinstall.py 脚本(不确定 Win10,但在 Windows 7 上,路径为 C:\Users\&lt;your_user&gt;\AppData\Local\Programs\Python\Python38\Scripts\

您应该运行 pywin32_postinstall.py -install 来注册 DLL。

【讨论】:

谢谢,我不知道!不幸的是,我无法验证它是否适用于 Windows 10(64 位),因为我现在已经通过pip 安装了PySide2 - 但也许我将有机会在下一个 Python 版本中进行测试:) @StarterKit 我这样做了,但仍然收到错误为“ImportError:DLL 加载失败:找不到指定的模块。” foo python 3.7 32bit 并通过 pip 安装 @rahul 我自己没有遇到过这样的错误。但是从谷歌我发现了 2 个可能的选项:1)PySide 和 Shiboken2 之间的包版本不匹配(你可以运行pip freeze 来检查版本;2)在不同位置重复的 DLL - 我不确定你需要检查哪个 DLL(不幸的是,我不能给你 DLL 名称) @StarterKit,感谢您提供的信息。我安装了 64 位版本,现在可以正常工作了。所以我根据需求切换。 @rahul,很高兴听到您的问题已解决 :)

以上是关于为 Python 3.8、Windows 安装 PySide2的主要内容,如果未能解决你的问题,请参考以下文章

Windows 系统安装 Python 3.8 详解

无法安装 Kivy(Windows 10,python 3.8)[重复]

如何在 Windows 上安装 pyodbc 以与 Python 3.8 一起使用?

使用 python 3.8 在 windows 10 上安装 django 频道和扭曲的问题

在带有 SP1 的 Windows 7 32 位上安装 Python 3.8

Mysql 连接器 8.0 和 Python 3.8