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:模块 'urllib' 没有属性 'parse'