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

the*_*isp 11 python pip python-3.x pyqt5

我尝试安装的程序需要安装 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.
Run Code Online (Sandbox Code Playgroud)

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

小智 21

对于 Mac/Homebrew 用户。

@the-x 的答案是朝着正确的方向发展。在通过 Homebrew 安装了 QT5 的 Mac 上,qmake只需将二进制文件添加到路径中即可。这可以通过以下方式实现

export PATH="/opt/homebrew/opt/qt5/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)

(当然取决于自制文件安装的位置)

  • 这为我解决了这个问题。qt5 路径可以通过 `brew --prefix qt` 找到 (2认同)
  • 根据@Voljum的[答案](/sf/answers/5213840551/)和[这个关于更具体问题的答案](/sf/ask/5160038061/ -pyqt5-it-cannot-go-on),您仍然需要接受 pyqt 许可证,例如使用 `pip install pyqt5 --config-settings --confirm-license= --verbose` 安装 (2认同)

小智 12

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

sudo apt install qt5-default
Run Code Online (Sandbox Code Playgroud)


eyl*_*esc 9

检查 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
Run Code Online (Sandbox Code Playgroud)

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


ejk*_*hen 9

对于 MacOS 用户。

我在 Apple M1 芯片上使用 Python 3.9.8。对我有用的是@Apaul 在原始问题部分的评论。在 pyqt5 之前安装 pyqt5-sip。

我还有一台 Intel Mac,在那台机器上,我不需要这样做。

  • 尝试使用“pip install pyqt5-sip”解决问题不会改变我的 M1 mac 上的任何内容。错误模块“sipbuild.api”没有保留属性“prepare_metadata_for_build_wheel”。 (25认同)

Luk*_*ski 8

帮助我的是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。 (6认同)

Rol*_*olf 7

结合这个问题的几个答案:在带有 macOS Ventura 13.0.1、Homebrew 3.6.17 和 python 3.11.0 的 Apple M1 Pro Macbook 上,以下命令为我修复了它(无 sudo):

brew install qt5
export PATH="/opt/homebrew/opt/qt5/bin:$PATH"
python3 -m ensurepip --default-pip
pip3 install pyqt5-sip
pip3 install pyqt5 --config-settings --confirm-license= --verbose
Run Code Online (Sandbox Code Playgroud)

最后一步调用 qmake 在 M1 上编译所有 Qt,需要很多分钟才能完成,请耐心等待它完成。


小智 5

升级 pip 使您能够安装 PyQt5。就我个人而言,我在安装 PyQt6 时遇到了同样的问题,我升级了我的 pip,一切都安装得很好。我认为 python 和 pip 版本在安装 PyQt 中都发挥着重要作用,因此请确保您拥有更高版本。

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

pip install --upgrade pip
Run Code Online (Sandbox Code Playgroud)