pyinstallerでopencvを含めた実行ファイルを作成するには
先日よりマウスやきーぼード入力を自動化したいと思い、PyAutoGuiを用いた自動化にチャレンジしてきました。
elsammit-beginnerblg.hatenablog.com
elsammit-beginnerblg.hatenablog.com
elsammit-beginnerblg.hatenablog.com
作成した環境を別PCでも自動化で使用したいな!!
と思い、pyinstallerで実行ファイル化することにしました!!
そこで早速実行してみました。
pyinstallerにより生成された実行ファイルを別PCで実行してみたところ、
マウスやキーボードの入力は問題なく動作したのですが、
locateOnScreen関数でエラーとなってしまいました。。。
■原因
実行時発生したエラーはこちら。
NotImplementedError: The confidence keyword argument is only available if OpenCV is installed.
OpenCVがなくエラーになってしまっているようです。
locateOnScreen関数自体はOpenCV不要で動作するのですが、
confidenceオプションを使用するためにはOpenCVが必要になります。
confidenceオプションを利用しないと完全一致で曖昧な一致はNGとなってしまいます。
付けないと全然使い物にならないんですね。。
なので付けないわけにもいかず。。
ということで、pyinstallerに含める方法を調査することにしました!!
■環境
今回利用した環境ですが、
・raspberryPi
・pythonバージョン:python3.6
■pyinstallerで実行ファイルにopencvを含める方法
調査を進めたところどうやら
pyinstaller --paths="/usr/local/lib/python3.6/dist-packages/cv2/python-3.6/" hoge.py
といったように、
pathsオプションでopencvまでのパスを指定することでpyinstallerにより実行ファイルに含めることができるようです。
こちらで生成された実行ファイルを実行してみたところ、
OpenCV関係のエラーが発生せず、問題なく実行できました!!
やった!!
もし実行ファイル1つにまとめたい場合には、
pyinstaller --onefile --paths="/usr/local/lib/python3.6/dist-packages/cv2/python-3.6/" hoge.py
といったようにonefileを付与すればOKです。
■OpenCVのパス調査方法
OpenCVのパスですが、
print(cv2.__file__)
で調べることが可能です。
もし上記で確認できない場合、もしかしたら
import cv2 print(cv2.path)
で確認できるかもしれないです。
Linux環境であれば、
/usr/local/lib/pythonバージョン/dist-packages/cv2/pythonバージョン/
がパスになるかと思います。
まぁ、正確なのはパスを確認いただく方法です。
■最後に
pyinstallerで生成された実行ファイルが実行できない時、少し絶望を覚えたのですが、、
何とか解決できてよかった。
調べれば何でも見つけられるものですね。