Arm64 架构下安装 PyQt5/PyQt6,只能选 conda 吗?

公司一直用 jetson orin nano 和 NX 设备开发案例,但是需要使用 Python + Qt ,目前一直采用 miniconda3 来安装 PyQt5 这个库,无法使用 pip 直接编译安装,我认为性能是完全够的,8G 内存,但是编译安装 Qt 还是失败。但是 miniconda 有点臃肿,能用是能用,但是不好用,X86 设备都改成了 uv 统一管理,因为开发的案例涉及到环境重置等,uv 和 poetry 这种比较好,可以 100%还原依赖。conda 导出的 yaml 有时候也是会抽风,总是漏个包之类的。但是又离不开 PyQt 。所以 还有招吗? apt 安装的全局,好像不太兼容。

在 arm64 上使用 pip 安装编译 PyQt 库,100%失败,pip 也没有 arm64 设备预编译好的 wheel. conda 在 arm64 设备提供预编译好的 pyqt 库,conda install 是可以直接基于当前 Python 版本安装的,不需要编译.


Arm64 架构下安装 PyQt5/PyQt6,只能选 conda 吗?

14 回复

pip 安装失败是头文件不完整吧,你贴个错误日志还有软件源的配置出来看看啊。


帖子回复:

不,在 Arm64 架构(比如 Apple Silicon Mac 或 ARM 服务器)上安装 PyQt5/PyQt6,conda 只是一个选项,但不是唯一选择。主要看你的具体环境和需求。

1. 使用 pip 安装(推荐首选) 对于大多数用户,直接用 pip 安装预编译的 wheel 包是最简单的方式。PyPI 上现在为 macOS ARM64 和 Linux aarch64 提供了官方预编译的二进制包。

# 安装 PyQt5
pip install PyQt5

# 或安装 PyQt6
pip install PyQt6

只要你的 Python 是 arm64 版本,pip 会自动下载对应的预编译包,无需从源码编译。

2. 使用系统包管理器 在 Linux 上,可以用系统包管理器安装(但版本可能较旧)。

# Ubuntu/Debian
sudo apt install python3-pyqt5

# Fedora
sudo dnf install python3-qt5

3. 使用 conda(备选方案) 如果你已经在用 conda 环境管理,conda-forge 也提供 arm64 的包。

conda install -c conda-forge pyqt

总结建议:直接 pip install PyQt6 试试,不行再看情况。

稍等,就是跑了半小时 内存占满 被系统直接杀了,不缺任何工具链

x86_64 设备同样 8GB 内存,就是完美编译并安装的,搜了很多说 arm64 缺少什么东西 属于硬件架构问题没办法


(demo) userubuntu:~/Desktop/demo$ uv pip install pyqt5
Resolved 2 packages in 6ms
Building pyqt5==5.15.2
Built pyqt5-sip==12.17.1
⠹ Preparing packages… (1/2)
半小时左右,直到 8GB 内存占满,被系统直接杀死,试了多个 python 版本。x86 设备上 10 分钟左右就编译安装好了。也是 8G ,
userubuntu:~/Desktop/demo$ neofetch
.-/+oossssoo+/-. userubuntu
:+ssssssssssssssssss+: -----------
-+ssssssssssssssssssyyssss± OS: Ubuntu 20.04.6 LTS aarch64
.ossssssssssssssssssdMMMNysssso. Host: NVIDIA Orin Nano Developer Kit
/ssssssssssshdmmNNmmyNMMMMhssssss/ Kernel: 5.10.216-tegra
+ssssssssshmydMMMMMMMNddddyssssssss+ Uptime: 4 days, 16 hours, 47 mins
/sssssssshNMMMyhhyyyyhmNMMMNhssssssss/ Packages: 2009 (dpkg)
.ssssssssdMMMNhsssssssssshNMMMdssssssss. Shell: bash 5.0.17
+sssshhhyNMMNyssssssssssssyNMMMysssssss+ Resolution: 3840x1080
ossyNMMMNyMMhsssssssssssssshmmmhssssssso Theme: Adwaita [GTK3]
ossyNMMMNyMMhsssssssssssssshmmmhssssssso Icons: Adwaita [GTK3]
+sssshhhyNMMNyssssssssssssyNMMMysssssss+ Terminal: /dev/pts/1
.ssssssssdMMMNhsssssssssshNMMMdssssssss. CPU: ARMv8 rev 1 (v8l) (6) 1.510GHz
/sssssssshNMMMyhhyyyyhdNMMMNhssssssss/ Memory: 833MiB / 7451MiB
+sssssssssdmydMMMMMMMMddddyssssssss+
/ssssssssssshdmNNNNmyNMMMMhssssss/
.ossssssssssssssssssdMMMNysssso.
-+sssssssssssssssssyyyssss±
:+ssssssssssssssssss+:
.-/+oossssoo+/-.

pip 软件源是 pypi 官方源

系统信息
userubuntu
-----------
OS: Ubuntu 20.04.6 LTS aarch64
Host: NVIDIA Orin Nano Developer Kit
Kernel: 5.10.216-tegra
Uptime: 4 days, 16 hours, 47 mins
Packages: 2009 (dpkg)
Shell: bash 5.0.17
Resolution: 3840x1080
Theme: Adwaita [GTK3]
Icons: Adwaita [GTK3]
Terminal: /dev/pts/1
CPU: ARMv8 rev 1 (v8l) (6) 1.510GHz
Memory: 833MiB / 7451MiB

我说说我遇到的问题,我在 arm64 上 pip 安装 pyqt5 ,会卡住不动。经过详细调试,原因是编译过程中需要确认 qt 的许可证,但 pip 流程中没有导出相关输入输出接口,没有给你输入 y 的机会,所以后台其实卡在交互上。
解决方案也很简单,使用
pip install pyqt5 --config-settings --confirm-license=
通过–config-settings 参数将另一个参数–confirm-license=传递给后台。
当然你也可以使用 pyqt5 源码,然后使用 sip 模块手动编译。实际上 pip 并不是 pyqt 的推荐安装方式。

不过这只是我遇到的问题和解决方案,不一定适合你的情况,仅供参考。

要不然试试 pyside6?

可以试试 Pixi ,Conda 生态的环境管理工具,rust 编写,可以混合管理 Conda 软件和 pypi 软件(内置 uv 处理),挺轻量好用的。

试试交叉编译呢? arm 的设备一般都是用交叉编译的

pyside 也是 qt 框架,也不行

我去看看

太麻烦了这个

回到顶部