OpenCV

macOSで、Python, PyQt, OpenCVを組み合わせたアプリをPyInstallerで.appにして起動する

本記事では、macOSで、Python, PyQt, OpenCV, PyInstallerでappを作った際に起動できない不具合の対処法を紹介します。

解決した環境

念の為、解決した環境のバージョンを示します。
macOS : 10.14.6
Python : 3.7.4
PyQt : 5.14.1
OpenCV : 4.2.0
PyInstaller : 4.0.dev0+3e6f7dc709

前提

先日の以下の投稿について、macでも試してみたところうまくいかず、ハマったのですが、解決しました。

以前、環境構築で紹介した、OpenCVでは、

pip install opencv-contrib-python

と紹介していました。

OpenCVのPythonの4つのパッケージ

OpenCVのPythonには、バージョン以外に、4つのパッケージがあります。
これらは複数の共存ができないみたいなので後述するように、新しくインストールする前に、アンインストールする必要があります。

a. 標準デスクトップ環境用パッケージ (Windows, macOS, GNU/Linux ディストリビューション)

pip install opencv-python : main モジュールのみ
pip install opencv-contrib-python : main モジュールと contrib モジュール

b. サーバ(ヘッドレス)環境用パッケージ

GUI 機能は含まれていない。小さく、より制限された環境に適している。

pip install opencv-python-headless : main モジュールのみ
pip install opencv-contrib-python-headless : main モジュールと contrib モジュール

対処法

上記から、よりシンプルで制限された環境のOpenCVのライブラリをインストールし直します。
そのため、一度、以前に入れた環境をアンインストールしてから、ヘッドレスな環境を入れ直します。

pip uninstall opencv-contrib-python
pip install opencv-python-headless

再度サンプルコードを用意して、下記をターミナルで実行します。

pyinstaller gray_scale.py --clean --onefile --windowed