我如何使用 M1chip 在我的 Mac 上运行 pyqt5

vih*_*hou 6 python macos pyqt5 apple-silicon apple-m1

现在。当我运行它时。错误 conmes ImportError: dlopen(/Users/vihanmy/Library/Python/3.8/lib/python/site-packages/PyQt5/QtWidgets.abi3.so, 2): 找不到合适的图像。确实找到了:/Users/vihanmy/Library/Python/3.8/lib/python/site-packages/PyQt5/QtWidgets.abi3.so:mach-o,但架构错误/Users/vihanmy/Library/Python/3.8/lib/ python/site-packages/PyQt5/QtWidgets.abi3.so:mach-o,但架构错误

exe*_*ler 52

经过几个小时的反复试验,我终于能够解决这个问题。我成功的配置是:

  1. 使用 Rosetta 2 打开终端 ( https://dev.to/courier/tips-and-tricks-to-setup-your-apple-m1-for-development-547g )
  2. 使用非自制Python(我的是/usr/bin/python3)创建虚拟环境
/usr/bin/python3 -m venv env
source env/bin/activate
Run Code Online (Sandbox Code Playgroud)
  1. 升级点
pip install --upgrade pip
Run Code Online (Sandbox Code Playgroud)
  1. 安装PyQt5
pip install PyQt5
Run Code Online (Sandbox Code Playgroud)

  • @AffableAmbler 我也是这么想的。可以遵循这些步骤;不过,如果您不想始终在 Rosetta 中打开终端,或者您只有一些一次性命令,则可以在任何需要 Rosetta 的命令前面添加 `arch -x86_64`。所以,我的步骤是:“virtualenv env”(或任何你喜欢的环境),“source env/bin/activate”,“arch -x86_64 pip install PyQt5”,然后当你想运行你正在编写的任何程序时, `arch x86_64 my_wicket_program.py` (5认同)
  • 以 Rosetta 模式运行终端对我有用 - 谢谢 (3认同)
  • 试图从一天开始就让它发挥作用!该死,谢谢伙计:) (2认同)
  • 请给这个家伙一枚奖章。 (2认同)
  • 谢谢@AxelJacobsen,这节省了我很多时间。arch -x86_64 在这里很重要。 (2认同)

eja*_*mes 18

我需要 PyQt5 作为 Python 库的依赖项,这对我有用。请参阅此处的原始帖子。

brew install pyqt5
echo 'export PATH="/opt/homebrew/opt/qt@5/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="/opt/homebrew/opt/pyqt@5/5.15.4_1/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
Run Code Online (Sandbox Code Playgroud)

  • 我还添加了: `export PYTHONPATH=/opt/homebrew/Cellar/pyqt@5/5.15.7/lib/python3.9/site-packages` 到我的 ~/.zshrc (2认同)

Lem*_*ned 14

我最终专门做的pyqt5是:

brew install pyqt@5
Run Code Online (Sandbox Code Playgroud)

我认为对于版本 4 和 6 这也可能有效。不幸的是,当我简单地去时brew install pyqt,这不起作用。

请注意,这仅适用于 M1 Macbook

当 M1s 稳定下来后,要尝试的另一件事是尝试pip3 install pyqt5在以 Rosetta 模式启动的终端中(左键单击 -> 获取信息 -> 在 Rosetta 中打开)

编辑(2022 年 11 月)

看来,如果您不是特别需要 pyqt5,现在可以通过 pip 在 M1/M2 Mac 上轻松安装 pyqt6。

python -m pip install pyqt6
Run Code Online (Sandbox Code Playgroud)


n8h*_*rie 6

我希望在没有Rosetta 的情况下在我的 M1 mac 上安装 pyqt5。我将它用作另一个项目的依赖项,我想在 venv 中安装该项目,该项目需要 pyqt5 并且无法通过 pipx ( urh) 安装。

不幸的是,目前没有兼容的轮子 ( curl --silent "https://pypi.org/pypi/PyQt5/json" | grep -i arm64),并且尝试在 3.10 上安装失败,并显示AttributeError: module 'sipbuild.api' has no attribute 'prepare_metadata_for_build_wheel'

值得庆幸的是,pyqt5 的自制安装是针对arm64 编译的并且运行良好。

我的步骤是:

$ # Install pyqt5 via homebrew
$ brew install pyqt@5
$ # Note that it's installed in python3.9, not 3.10
$ brew cat pyqt@5 | grep 'depends_on.*python'
  depends_on "python@3.9"
$ # Make a python3.9 virtualenv with access to the system's site-packages
$ /opt/homebrew/bin/python3.9 -m venv --system-site-packages .venv
$ source .venv/bin/activate
Run Code Online (Sandbox Code Playgroud)

此时,我可以urh使用 hombrew 中的 arm64 编译的 pyqt5 安装到 virtualenv 中,而不需要 Rosetta(并且不需要进一步“污染”我的系统站点包),并且它按预期运行(因为问题是关于跑步)。


小智 4

尝试在ARM架构下安装pyqt如下

arch -arm64 brew install pyqt