这是一个非常针对 macOS 的问题,但我不知道该把它放在哪里。我有一个使用 PyQt5 的 Python 脚本。不幸的是,
pyqt5
没有轮子可以用pip
安装它,所以如果你使用arm64
,你必须从源代码构建。这就是我今天成功做到的:
它需要
qmake
,我是通过brew
(brew install qt5
)安装的。将其添加到我的路径后,我可以执行它(which qmake
显示正确的路径)。
然后我使用以下命令通过 pip 安装 pyqt5:
pip install pyqt5 --config-settings --confirm-license= --verbose
(pyqt5 要求许可协议,但 pip install 不是交互式的,因此命令很长)。
正如我所说,直到上周我才能成功地做到这一点。当我今天尝试这个时,我收到错误:
The dbus-python package does not seem to be installed.
These bindings will be built: Qt, pylupdate, pyrcc.
Generating the Qt bindings...
Generating the pylupdate bindings...
_in_process.py: /private/var/folders/ws/vdb_nvyj35g9ck_srpvqpccm0000gn/T/pip-install-jr3725ba/pyqt5_7d0f0bcc5a7241bd8afa726e0fa5e8d1/sip/QtCore/qprocess.sip: line 99: column 5: 'Q_PID' is undefined
error: subprocess-exited-with-error
与
sip
相关的事情似乎发生了变化。我的系统上唯一发生变化的是从 Xcode14 更新到 Xcode15。我真的不明白为什么这会影响 pyqt5 或 sip,但这是我唯一能想到的。
我还尝试另外通过brew安装
sip
,但这并没有改变任何东西。
有什么想法吗?
我可以确认它不再工作的原因(macOS,arm64)是由于 Xcode 15。我从这里下载了 Xcode 14.3.1(https://download.developer.apple.com/Developer_Tools/Xcode_14)。 3.1/Xcode_14.3.1.xip),解压它,将
Xcode.app
重命名为 Xcode_14.3.1.app
(以便能够并行拥有两个版本),将其复制到 /Applications
并启动它。之后,我将命令行工具设置为 14.3.1(设置 -> 位置;还有其他方法,例如 xcode-select -s
以及仅使用命令行工具的方法),然后使用以下命令安装 PyQt5:pip install pyqt5 --config-settings --confirm-license= --verbose
。我可以确认从源代码构建 PyQt5 再次有效(这仍然需要来自 qmake
或 qt.io 的 brew
),因此与 Xcode 15 的某些内容不兼容。我会尝试找出答案,这正是哪一个,所以我们可以将其转移到 linux aarch64。