在 Apple Silicon 上配置 PyQt5 以及 LabelImg

在 Apple Silicon 上配置 PyQt5 以及 LabelImg

tech, gadget, hands-on

在 Apple Silicon 上配置 PyQt5 以及 LabelImg #

Mac M1 芯片安装 labelImg - 简书

最近突然需要继续做一些数据标注的任务,下载好了之前经常用的 Labelme 后发现输出的标记文件是 json 格式的,不符合项目规范。发现 labelImg 这款标注软件刚好是输出 xml 作为标记文件的,十分合适。

但是由于最近刚刚换了电脑,时隔一年的试用后终于把我的主力机换到了 Apple Silicon 平台上来,随之而来的就是这一系列的配置问题。

GitHub - heartexlabs/labelImg

Q-问题 #

官方的安装文档向来是非常重要的部分。主要是在执行 pip3 install pyqt5 lxml # Install qt and lxml by pip 的时候报错,直接 error。

在这一部分可能会有很多的人会遇到与我相似的问题,故将整个问题的出现与操作列出。

一般到这里复制错误信息到 Google 会发现有一部分用户也遇到了这类问题,主要的原因就是 arm64 架构和此处的 PyQt5 不兼容所导致的。

此时可以尝试利用 homebrew 中更新的命令:brew install pyqt@5 进行安装。

并且可以看到这个命令安装的 PyQt5 已经是适配 arm64 架构的版本了。

但此时如果继续按照官方文档走下去安装,会发现在安装labelimg的时候依旧会报错。并且所报的错误与之前几乎完全相同。

此时就可以发现,整个的错误原因都是来源于PyQt5没有正确导入造成的。虽然已经在本地安装好相应的包了,但是并没有导入到对应的Python环境当中,导致无法正确使用。如果在此时尝试直接下载GitHub的源码编译安装的话,会非常直接的发现报错内容为:PyQt5 import error

正确准备arm64架构上的PyQt5 #

Outline #

  1. 安装并转移 pyqt5 arm64 版本: M1 Mac 安装 PyQt5 的方法 - 知乎
  2. 直接 pip 安装 labelimg
  3. 打开即可使用。且为 arm64 版本,性能极佳。

创建虚拟环境(推荐) #

非常推荐利用python和conda自带的虚拟环境来管理各种不同的空间和包,这样能做到最大限度的解耦,并且即用即取,不用即弃,也不易污染dev环境。

  • 创建空间:conda create -n "your_env_name" python="3.9"
  • 激活空间:conda activate your_env_name

由于labelimg的当前支持版本为Python3.9,此处便直接填入。

安装PyQt #

此处利用homebrew作为包管理器

  • 安装arm64架构的PyQt5:brew install pyqt@5

迁移——最重要的环节 #

这一步迁移就决定了可以实现完全原生arm64架构的PyQt5体验,并且基于这一套包的上层应用都可以在原生Apple Silicon架构中运行,获得最佳的性能和能耗表现。

  • 通过conda env list查看环境列表和路径

切换到环境目录下,寻找对应的site-package目录。此目录下存放了全部在此python版本下安装的包文件。

拷贝PyQt5到对应的目录下

  • `cp -r PyQt5/ /opt/homebrew/Caskroom/miniforge/base/envs/label/lib/python3.9/site-packages

全部准备工作就做好了。可以通过相应的命令来检测是否安装正确:

  • import PyQt5

没有报错即包导入成功

安装labelimg #

  • pip install labelimg

即可成功安装。

安装后在相应路径下打开python env,输入labelimg .即可打开程序