arm64架构Ubuntu18.04使用pyenv pip安装PyQt5报错求助
适配环境
- 硬件架构:arm64
- 操作系统:Ubuntu 18.04
- Python管理工具:pyenv
- 触发场景:pip安装PyQt5时抛出错误
AttributeError: module 'sipbuild.api' has no attribute 'prepare_metadata_for_build_wheel'
根因说明
该错误由三类问题共同触发:
- arm64架构下PyQt5官方未提供对应Ubuntu 18.04的预编译wheel包,pip默认从源码构建,依赖版本不匹配时直接报错
- 最新版sip构建工具移除了
prepare_metadata_for_build_wheel接口,pip默认拉取最新sip构建时,和旧版PyQt5的构建逻辑不兼容 - 系统缺少Qt5编译依赖,源码构建过程中断也会抛出同类错误
解决步骤
方案1:固定依赖版本从源码构建(推荐pyenv隔离环境使用)
- 先安装系统层必备编译依赖:
sudo apt update sudo apt install -y python3-dev libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libxcb-xinerama0 libgl1-mesa-glx build-essential
- 清理当前pyenv环境内残留的冲突包:
pip uninstall -y PyQt5 PyQt5-sip sip
- 固定安装兼容版本的构建依赖,关闭pip构建隔离避免自动拉取不兼容的新版sip:
pip install sip==6.5.1 PyQt5-sip==12.9.0 pip install --no-build-isolation PyQt5==5.15.6
注:Ubuntu 18.04系统glibc版本较低,pyenv内安装的Python版本建议选择3.7~3.9区间,3.10及以上版本会存在底层依赖兼容问题。安装全程不要加sudo,避免调用系统Python的pip导致包装错位置。
方案2:复用系统源预编译包(源码构建失败时使用)
Ubuntu 18.04官方源已经提供了arm64架构适配好的PyQt5包,直接安装后软链接到pyenv环境即可,无需手动编译:
- 安装系统源预编译的PyQt5:
sudo apt install -y python3-pyqt5 python3-sip
- 将系统安装的PyQt5、sip相关文件软链接到当前pyenv Python版本的site-packages目录:
PYVER=$(pyenv version-name | cut -d. -f1,2) SITE_PACKAGES=~/.pyenv/versions/$(pyenv version-name)/lib/python${PYVER}/site-packages/ ln -s /usr/lib/python3/dist-packages/PyQt5 ${SITE_PACKAGES} ln -s /usr/lib/python3/dist-packages/sip* ${SITE_PACKAGES}
- 执行
python -c "import PyQt5; print(PyQt5.__version__)"验证,无报错即为安装成功。
内容的提问来源于stack exchange,提问作者sourab majhi
相关产品推荐
相关产品推荐

