AttributeError:模块 'sipbuild.api' 没有 PyQt5 5.15.0 的属性 'prepare_metadata_for_build_wheel'

Posted

技术标签:

【中文标题】AttributeError:模块 \'sipbuild.api\' 没有 PyQt5 5.15.0 的属性 \'prepare_metadata_for_build_wheel\'【英文标题】:AttributeError: module 'sipbuild.api' has no attribute 'prepare_metadata_for_build_wheel' for PyQt5 5.15.0AttributeError:模块 'sipbuild.api' 没有 PyQt5 5.15.0 的属性 'prepare_metadata_for_build_wheel' 【发布时间】:2021-04-03 10:28:29 【问题描述】:

我尝试安装的程序需要安装 PyQt5 5.15.0 ,这给了我这个错误。奇怪的是,最新版本的 PyQt5 (5.15.2) 可以正常安装,但是这个程序特别需要 5.15.0。

命令输出:

Collecting PyQt5==5.15.0
  Using cached PyQt5-5.15.0.tar.gz (3.3 MB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... error
    ERROR: Command errored out with exit status 1:
     command: 'c:\users\mshal\appdata\local\programs\python\python39\python.exe' 'C:\Users\mshal\AppData\Roaming\Python\Python39\site-packages\pip\_vendor\pep517\_in_process.py' prepare_metadata_for_build_wheel 'C:\Users\mshal\AppData\Local\Temp\tmp41s11ev6'
         cwd: C:\Users\mshal\AppData\Local\Temp\pip-install-sfw90hvc\pyqt5_e2cc46859b554da7b84798abae5378ba
    Complete output (31 lines):
    Traceback (most recent call last):
      File "C:\Users\mshal\AppData\Roaming\Python\Python39\site-packages\pip\_vendor\pep517\_in_process.py", line 126, in prepare_metadata_for_build_wheel
        hook = backend.prepare_metadata_for_build_wheel
    AttributeError: module 'sipbuild.api' has no attribute 'prepare_metadata_for_build_wheel'

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "C:\Users\mshal\AppData\Roaming\Python\Python39\site-packages\pip\_vendor\pep517\_in_process.py", line 280, in <module>
        main()
      File "C:\Users\mshal\AppData\Roaming\Python\Python39\site-packages\pip\_vendor\pep517\_in_process.py", line 263, in main
        json_out['return_val'] = hook(**hook_input['kwargs'])
      File "C:\Users\mshal\AppData\Roaming\Python\Python39\site-packages\pip\_vendor\pep517\_in_process.py", line 130, in prepare_metadata_for_build_wheel
        return _get_wheel_metadata_from_wheel(backend, metadata_directory,
      File "C:\Users\mshal\AppData\Roaming\Python\Python39\site-packages\pip\_vendor\pep517\_in_process.py", line 159, in _get_wheel_metadata_from_wheel
        whl_basename = backend.build_wheel(metadata_directory, config_settings)
      File "C:\Users\mshal\AppData\Local\Temp\pip-build-env-nnx_yu09\overlay\Lib\site-packages\sipbuild\api.py", line 51, in build_wheel
        project = AbstractProject.bootstrap('pep517')
      File "C:\Users\mshal\AppData\Local\Temp\pip-build-env-nnx_yu09\overlay\Lib\site-packages\sipbuild\abstract_project.py", line 83, in bootstrap
        project.setup(pyproject, tool, tool_description)
      File "C:\Users\mshal\AppData\Local\Temp\pip-build-env-nnx_yu09\overlay\Lib\site-packages\sipbuild\project.py", line 479, in setup
        self.apply_user_defaults(tool)
      File "project.py", line 62, in apply_user_defaults
        super().apply_user_defaults(tool)
      File "C:\Users\mshal\AppData\Local\Temp\pip-build-env-nnx_yu09\overlay\Lib\site-packages\pyqtbuild\project.py", line 79, in apply_user_defaults
        super().apply_user_defaults(tool)
      File "C:\Users\mshal\AppData\Local\Temp\pip-build-env-nnx_yu09\overlay\Lib\site-packages\sipbuild\project.py", line 225, in apply_user_defaults
        self.builder.apply_user_defaults(tool)
      File "C:\Users\mshal\AppData\Local\Temp\pip-build-env-nnx_yu09\overlay\Lib\site-packages\pyqtbuild\builder.py", line 66, in apply_user_defaults
        raise PyProjectOptionException('qmake',
    sipbuild.pyproject.PyProjectOptionException
    ----------------------------------------
ERROR: Command errored out with exit status 1: 'c:\users\mshal\appdata\local\programs\python\python39\python.exe' 'C:\Users\mshal\AppData\Roaming\Python\Python39\site-packages\pip\_vendor\pep517\_in_process.py' prepare_metadata_for_build_wheel 'C:\Users\mshal\AppData\Local\Temp\tmp41s11ev6' Check the logs for full command output.

我使用的是最新版本的 pip。关于这个问题的根本原因的任何想法?

【问题讨论】:

尝试先升级 pip:sudo python3 -m pip install --upgrade pip 然后sudo python3 -m pip install pyqt5 @eyllanesc 它说 sudo 未被识别为内部命令。顺便说一句,我在 Windows 上,但我的 pip 已安装到我刚刚检查过的最新版本 在 Raspberry Pi (Linux) 上遇到与您相同的问题,但没有一个答案有效。无论下面给出的建议如何,错误消息都会一直显示.. 可能,首先安装pyqt-sip 可能会有所帮助? python3 -m pip install pyqt-sip 【参考方案1】:

帮助我将 pip 从 20.2.3 升级到最新版本(在我的例子中是 21.1.1)

【讨论】:

我尝试使用 Python 3.8.2 和 pip 19.2.3 在虚拟环境中安装 PyQt5。然后我运行pip install --upgrade pip 并升级到 pip-21.1.2,我能够毫无问题地安装 PyQt5。【参考方案2】:

检查 PyQt5 在 pypi 中为 5.15.0 版本提供的二进制文件我发现它没有在 windows 中提供 python3.9 的二进制文件,因此 pip 正在尝试使用复杂的源代码进行编译,并且可以生成多个依赖项问题(例如,您必须安装 Qt 5.15 等)。所以我的建议是安装更新版本的 PyQt5,例如 5.15.2,因为如果它在 Windows 上提供 python3.9 的二进制文件,除了作为 Qt 的 LTS 版本的包装器之外,它还将解决几个错误.

python -m pip install PyQt5==5.15.2

另一个解决方案是使用python3.8而不是python3.9,这样你就可以从pypi安装pyqt5 5.15.0没有问题。

【讨论】:

有道理!我已经安装了 5.15.2 版本,它工作得很好,但是我尝试使用的程序出于某种原因一直尝试下载 5.15.0,即使我已经安装了 5.15.2。那会是那个特定程序本身的问题吗? @thecrispywisp 1) 阅读我更新后的帖子,2) 由于 Qt 5.15.0 和 Qt 5.15.2 的代码库是相同的,因此某些依赖项似乎非常严格(除了愚蠢之外),只是Qt 5.15.2 解决了 Qt 5.15.0 的几个错误,如果您告诉我它是什么程序(或存储库),那么我会尝试调查应该修改哪些内容,以便它不再要求您提供该特定版本。 我非常感谢详细的答案,这是有道理的。该程序名为 RLBot rlbot.org ,我使用的是 windows 版本。 @thecrispywisp 你是如何安装 RLBot 的?另一方面,我认为最简单的方法是使用我的答案的选项 2:卸载 python3.9 并使用 python3.8,然后安装 pyqt5 5.15.0 如果您点击链接“下载 RLbot for Windows”,感谢您的输入!我现在就去做【参考方案3】:

使用 python3.6 在 arm 上运行(nvidia Xavier 上的 ubuntu18):

sudo apt install qt5-default

【讨论】:

这应该是选择的答案,如果主机上没有安装 QT5 或者版本差距足够大,元数据将不存在或无效。【参考方案4】:

升级您的 pip 使您能够安装 PyQt5。就个人而言,我在安装 PyQt6 时遇到了同样的问题,我升级了我的 pip,一切都安装得很好。我认为 python 和 pip 版本在安装 PyQt 中都扮演着重要的角色,所以请确保你有更高版本。

这是我在 Linux 中使用的命令:

pip install --upgrade pip

【讨论】:

【参考方案5】:

由于qt5-default不可用,我安装了qt5-default的依赖

sudo apt-get install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools

之后我先通过 apt-get 安装 pyqt5,然后通过 pip 安装

sudo apt-get install pyqt5-dev
pip install pyqt5

现在***似乎可以工作了


旁注:

我不确定sudo apt-get install pyqt5-dev 是否有必要

【讨论】:

【参考方案6】:

这可以通过切换到 Python >= 3.8 的环境来解决

【讨论】:

我的 Python 是 3.8.9,但我仍然遇到错误(使用 PyQt5 v. 5.15.4)

以上是关于AttributeError:模块 'sipbuild.api' 没有 PyQt5 5.15.0 的属性 'prepare_metadata_for_build_wheel'的主要内容,如果未能解决你的问题,请参考以下文章

AttributeError:模块'asyncio'没有属性'run'

AttributeError:模块'mysql'没有属性'connector'

AttributeError:“模块”对象没有属性“作者”

AttributeError:模块 'urllib' 没有属性 'parse'

AttributeError:模块“cupy”没有属性“cupyx”

AttributeError:“模块”对象没有属性