无法在 MacOS 上安装 PyQt5

LDA*_*LDA 3 python installation pip package pyqt5

我已经尝试了一百万种不同的方法来安装 PyQt5,但我不断收到相同的错误消息。我尝试在Python虚拟环境中安装它,但仍然没有成功。我尝试下载 Qt 以查看是否缺少任何依赖项,但它没有解决问题。我尝试过更新pip、使用Homebrew、下载源码等很多方法,但还是无法安装。我正在 MacOS 上工作。

\n

这是我尝试过的示例:

\n
(env) firstLast@name-MacBook-Pro project % pip install pyqt5   \n   \nCollecting pyqt5\n  Using cached PyQt5-5.15.9.tar.gz (3.2 MB)\n  Installing build dependencies ... done\n  Getting requirements to build wheel ... done\n  Preparing metadata (pyproject.toml) ... error\n  error: subprocess-exited-with-error\n  \n  \xc3\x97 Preparing metadata (pyproject.toml) did not run successfully.\n  \xe2\x94\x82 exit code: 1\n  \xe2\x95\xb0\xe2\x94\x80> [20 lines of output]\n      Querying qmake about your Qt installation...\n      Traceback (most recent call last):\n        File "/Users/name/Documents/final_project/tfod/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>\n          main()\n        File "/Users/name/Documents/final_project/tfod/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main\n          json_out[\'return_val\'] = hook(**hook_input[\'kwargs\'])\n                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n        File "/Users/name/Documents/final_project/tfod/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 152, in prepare_metadata_for_build_wheel\n          whl_basename = backend.build_wheel(metadata_directory, config_settings)\n                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n        File "/private/var/folders/ky/630000/T/pip-build-env-129w2sdq/overlay/lib/python3.11/site-packages/sipbuild/api.py", line 46, in build_wheel\n          project = AbstractProject.bootstrap(\'wheel\',\n                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n        File "/private/var/folders/ky/630000/T/pip-build-env-129w2sdq/overlay/lib/python3.11/site-packages/sipbuild/abstract_project.py", line 87, in bootstrap\n          project.setup(pyproject, tool, tool_description)\n        File "/private/var/folders/ky/630000/T/pip-build-env-129w2sdq/overlay/lib/python3.11/site-packages/sipbuild/project.py", line 602, in setup\n          self.update(tool)\n        File "/private/var/folders/ky/630000/T/pip-install-blf1r8si/pyqt5_7df68330104f4a9dbfac80220bfcd894/project.py", line 165, in update\n          raise UserException(\n      sipbuild.exceptions.UserException\n      [end of output]\n  \n  note: This error originates from a subprocess, and is likely not a problem with pip.\nerror: metadata-generation-failed\n\n\xc3\x97 Encountered error while generating package metadata.\n\xe2\x95\xb0\xe2\x94\x80> See above for output.\n\nnote: This is an issue with the package mentioned above, not pip.\nhint: See above for details.\n
Run Code Online (Sandbox Code Playgroud)\n

And*_*ris 5

通用 macOS 解决方案:

在 macOS 上,尝试安装 PyQt5 时存在一个已知问题,该问题需要在系统上安装 Qt5,并将其qmake工具添加到系统的 PATH 中,如PyPI 页面的安装部分所示。

要安装Qt5,您可以在终端中运行以下命令:

brew install qt5
Run Code Online (Sandbox Code Playgroud)

安装后,您需要找到qmake工具路径,通常可以在此处找到:/usr/local/opt/qt/bin/qmake。要将此路径添加到系统的 PATH,您需要.bash_profile通过键入以下内容在终端中打开该文件:

nano ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

然后,将以下行添加到文件末尾:

export PATH="/usr/local/opt/qt/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)

这会将安装目录添加qmake到系统的 PATH 中。Ctrl按+ X、 、YEnter保存并关闭文件。要将更改应用到当前会话,请运行以下命令:

source ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

您可以qmake通过运行以下命令来验证它现在是否位于 PATH 上:

which qmake
Run Code Online (Sandbox Code Playgroud)

这应该可以解决问题并允许您安装 PyQt5。


M1芯片具体解决方案:

M1芯片于2020年11月推出,基于ARMv8.5架构,与基于Intel的Mac电脑使用的x86_64架构不同。因此,必须编译 PyQt 等应用程序以包含 ARM 兼容的二进制文件才能在 M1 芯片上运行。为了解决这个问题,Qt 团队开发了与 Intel 和Apple Silicon硬件兼容的通用二进制文件

但是,这些通用二进制文件仅在 6.2 及更高版本中可用。可以通过运行以下命令来确认:

aviolaris@arch:~$ curl -s https://pypi.org/pypi/PyQt5/json | jq -r '.releases | to_entries[] | .value[] | select(.filename | contains("universal")) | .url | split("/") | .[-1]'

aviolaris@arch:~$ curl -s https://pypi.org/pypi/PyQt6/json | jq -r '.releases | to_entries[] | .value[] | select(.filename | contains("universal")) | .url | split("/") | .[-1]'
PyQt6-6.2.0-cp36-abi3-macosx_10_14_universal2.whl
PyQt6-6.2.1-cp36-abi3-macosx_10_14_universal2.whl
PyQt6-6.2.2-cp36-abi3-macosx_10_14_universal2.whl
PyQt6-6.2.3-cp36-abi3-macosx_10_14_universal2.whl
PyQt6-6.3.0-cp37-abi3-macosx_10_14_universal2.whl
PyQt6-6.3.1-cp37-abi3-macosx_10_14_universal2.whl
PyQt6-6.4.0-cp37-abi3-macosx_10_14_universal2.whl
PyQt6-6.4.1-cp37-abi3-macosx_10_14_universal2.whl
PyQt6-6.4.2-cp37-abi3-macosx_10_14_universal2.whl
PyQt6-6.5.0-1-cp37-abi3-macosx_10_14_universal2.whl
PyQt6-6.5.0-cp37-abi3-macosx_10_14_universal2.whl
Run Code Online (Sandbox Code Playgroud)

话虽这么说,如果您明确不想使用与您的系统架构兼容的 PyQt6,开箱即用,您可以尝试使用Rosetta安装 PyQt5 ,Rosetta 是一个内置模拟器,使您能够在基于 ARM 的 Mac 计算机。

使用罗塞塔:

  • 转至Applications,选择Utilities并找到您的终端应用程序。
  • 右键单击终端应用程序并选择Duplicate
  • 将重复的应用程序重命名为“ Terminal_x86_64 ”。
  • 右键单击Terminal_x86_64应用程序,选择Get Info并启用Open using Rosetta选项。
  • 打开Terminal_x86_64应用程序并键入arch以验证它现在是否显示“x86_64”。

完成这些步骤后,您将能够通过键入相关的 pip 命令在Terminal_x86_64应用程序中安装 PyQt5。