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



我试图安装的程序需要安装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:usersmshalappdatalocalprogramspythonpython39python.exe' 'C:UsersmshalAppDataRoamingPythonPython39site-packagespip_vendorpep517_in_process.py' prepare_metadata_for_build_wheel 'C:UsersmshalAppDataLocalTemptmp41s11ev6'
cwd: C:UsersmshalAppDataLocalTemppip-install-sfw90hvcpyqt5_e2cc46859b554da7b84798abae5378ba
Complete output (31 lines):
Traceback (most recent call last):
File "C:UsersmshalAppDataRoamingPythonPython39site-packagespip_vendorpep517_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:UsersmshalAppDataRoamingPythonPython39site-packagespip_vendorpep517_in_process.py", line 280, in <module>
main()
File "C:UsersmshalAppDataRoamingPythonPython39site-packagespip_vendorpep517_in_process.py", line 263, in main
json_out['return_val'] = hook(**hook_input['kwargs'])
File "C:UsersmshalAppDataRoamingPythonPython39site-packagespip_vendorpep517_in_process.py", line 130, in prepare_metadata_for_build_wheel
return _get_wheel_metadata_from_wheel(backend, metadata_directory,
File "C:UsersmshalAppDataRoamingPythonPython39site-packagespip_vendorpep517_in_process.py", line 159, in _get_wheel_metadata_from_wheel
whl_basename = backend.build_wheel(metadata_directory, config_settings)
File "C:UsersmshalAppDataLocalTemppip-build-env-nnx_yu09overlayLibsite-packagessipbuildapi.py", line 51, in build_wheel
project = AbstractProject.bootstrap('pep517')
File "C:UsersmshalAppDataLocalTemppip-build-env-nnx_yu09overlayLibsite-packagessipbuildabstract_project.py", line 83, in bootstrap
project.setup(pyproject, tool, tool_description)
File "C:UsersmshalAppDataLocalTemppip-build-env-nnx_yu09overlayLibsite-packagessipbuildproject.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:UsersmshalAppDataLocalTemppip-build-env-nnx_yu09overlayLibsite-packagespyqtbuildproject.py", line 79, in apply_user_defaults
super().apply_user_defaults(tool)
File "C:UsersmshalAppDataLocalTemppip-build-env-nnx_yu09overlayLibsite-packagessipbuildproject.py", line 225, in apply_user_defaults
self.builder.apply_user_defaults(tool)
File "C:UsersmshalAppDataLocalTemppip-build-env-nnx_yu09overlayLibsite-packagespyqtbuildbuilder.py", line 66, in apply_user_defaults
raise PyProjectOptionException('qmake',
sipbuild.pyproject.PyProjectOptionException
----------------------------------------
ERROR: Command errored out with exit status 1: 'c:usersmshalappdatalocalprogramspythonpython39python.exe' 'C:UsersmshalAppDataRoamingPythonPython39site-packagespip_vendorpep517_in_process.py' prepare_metadata_for_build_wheel 'C:UsersmshalAppDataLocalTemptmp41s11ev6' Check the logs for full command output.

我正在使用最新版本的pip。对这个问题的根本原因有什么想法吗?

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

适用于Mac/Homebrew用户。

@The-x的回答正朝着正确的方向前进。在通过Homebrew安装了QT5的Mac上,只需要将qmake二进制文件添加到路径中。这可以通过实现

export PATH="/opt/homebrew/opt/qt5/bin:$PATH"

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

用python3.6(nvidia Xavier上的ubuntu18)武装跑步:

sudo apt install qt5-default

适用于MacOS用户。

我在使用Python 3.9.8的Apple M1硅上。对我有用的是@Apaul在最初的问题部分的评论。在安装pyqt5之前先安装pyqt5-sip。

我还有一台英特尔Mac电脑,在那台机器上,我不需要这么做。

检查PyQt5在版本5.15.0的pypi中提供的二进制文件我发现它没有在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。

结合这个问题的几个答案:在带有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

最后一步调用qmake编译M1上的所有Qt,需要几分钟才能完成,耐心等待并完成。

升级pip可以安装PyQt5。就我个人而言,我在安装PyQt6时遇到了同样的问题,我升级了我的pip,一切都安装得很完美。我认为python和pip版本在安装PyQt中都起着重要作用,所以请确保您有更高的版本。

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

pip install --upgrade pip

对于所有在Apple M1安装中遇到困难的人,这里有一个有效的解决方案,专门解决安装依赖PyQt5pixellib库的问题,但您可以将其同等地应用于其他库:

  1. PyQt5在Apple M1上不受支持,它需要qt6:https://www.reddit.com/r/learnpython/comments/o4w1ut/comment/h2jele3/?utm_source=share&utm_medial=web2x&上下文=3,https://www.qt.io/product/qt6
  2. 这意味着您需要安装PyQt6:python3 -m pip install PyQt6
  3. 转到你需要的库,在我的例子中是pixellib:https://pypi.org/project/pixellib/#files以及
  4. 下载轮子文件
  5. 获取车轮工具:pip install wheel
  6. 拆下车轮wheel unpack pixellib-0.7.1-py3-none-any.whl
  7. 将PyQt5的依赖项更改为PyQt6
    1. 编辑pixellib-0.7.1/pixellib-0.7.1.dist-info/METADATA
    2. CCD_ 9=>pyQt6
  8. 装回wheel pack pixellib-0.7.1
  9. 安装:pip install pixellib-0.7.1-py3-none-any.whl
  10. 在python中测试:`
# should work
import pixellib

p.S.感谢Terra和ChaOS对本报告项目的支持。

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

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是否有必要

此处抛出的错误消息具有误导性——这不是sipbuild.api属性的问题。实际上,在这种情况下,程序qmake丢失了,请参阅Python回溯的最后一行。看看它是否安装在您的系统上,并将其添加到PATH变量中。否则,安装它。在Linux上,这将使用完成

sudo apt-get install qt5-qmake

当我尝试安装库pip install pixellib时,我在使用Python 3.9.12的M1 Mac上遇到了这个问题。我做的第一件事是:pip install pixellib --verbose查看整个日志,在那里我注意到PyQt5正在等待输入。所以后来我找到了其他有这个问题的人,并使用了pip install pyqt5 --config-settings --confirm-license= --verbose,它需要一些时间来编译,但有效!

我无法使上述任何解决方案发挥作用,但我设法通过使用sudo apt-get install PyQt5使用python3.9PyQt5=5.15.2pip=22.0.2sip=6.5.0使其发挥作用。如果您在虚拟环境中需要它,您可以手动将PyQt5文件夹从默认的/usr/lib/python3/dist-packages复制到虚拟环境中的site-packages文件夹。

我终于让它在M1/M2 Macbook Pro上运行了
这些答案对我都不起作用,所以我查看了brew以安装pyqt
以下命令将通过brew安装pyqt5

brew install pyqt@5

然后它就起作用了。

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

最新更新