Homebrewで (pyenv + pyenv-virtualenv + python3 + OpenCV3)の環境を構築する。

Mac上にOpenCV3環境を構築してみます。

環境は次のとおりです。
pyenv管理下のpythonから0penCVを扱うには多少コツがいるのでその記録です。

  • Homebrew 1.3.8
  • pyenv 1.1.5
  • pyenv-virtualenv 1.1.1
  • python 3.6.2
  • OpenCV 3.3.1

 

次のサイトを参考いたしました。

brewでOpenCV 3を入れた場合、pyenvで作成したvirtualenv環境では、デフォルトでimport cv2ができない。
numpyのインストールと、OpenCV 3へのシンボリックリンク作成が必要なようなのでメモ。

プログラムは、用いる言葉の選択で決まる」より引用

2017.11.30追記: シンボリックリンクを張らない方法を見つけました(後述)

 

1. Homebrew + pyenv + pyenv-virtualenv

インストール方法についてはこちら

 

2. Python3

Homebrewで3.6.3をインストールしようとしたら失敗。

 

ここ(https://github.com/pyenv/pyenv/wiki/Common-build-problems)を見ろというので参照の上,再挑戦。どこにopensslパッケージがあるのかコンパイラに教えないとだめみたい。

 

2017.11.30追記: (補足)

次のコマンドを実行してopensslの情報を見ると、なぜオプションを設定しなければならないかが分かります。
Appleが使うopensslライブラリをbrewのものと入れ替えるとまずいようです。

補足終わり

 

 

3. pyenv-virtualenvでOpenCV開発環境を作る

Python 3.6.3をベースにpyenv-virtualenvでOpenCV開発環境を作っておきます。
ディレクトリは~/opencv_testです。

 

4. OpenCV3

OpenCVをHomebrewで探してみます。opencvがありました。

 

依存関係とか,詳細を調べてみます。バージョンは3.3.1です。

 

インストールします。

 

5. pyenv-virtualenv環境でOpenCVを使えるように設定

pyenvでインストールしたPythonからは,OpenCVを素直に使うことが出来ません。
そのために一手間が必要です。

まず,pyenv-virtualenv環境のsite-packagesの場所を調べます。

 

OpenCVのインストール先から,ここに対して,シンボリックリンクを張ります。

 

OpenCVのインストールと同時に,依存関係にある必須パッケージnumpyがインストールされました。OpenCVと同様にシンボリックリンクを張って利用することも出来ますが面倒です。そこで,pyenv-virtualenv環境下で,pipを使って改めてインストールします。

 

numpyとOpenCVが使えるかどうか,Pythonでimportしてみます。
エラーが起きなければ,環境設定は成功です。

 

 

2017.11.30: 追記

brewでインストールしたopencv(と依存パッケージnumpy)をpyenv環境下で使うための違う方法を発見しました。

きっかけはこちら。

 

brew下のpython(/usr/local/….)ではなく、pyenv&pyenv-virtualenv下のpython(~/.pyenv/versions/….)であることを考慮して、home-brew.pthを設置してみたら、うまくいきました。

brew下のpythonパッケージ(opencvとかnumpyとか)を、根こそぎpyenv&pyenv-virtualenv下のpythonで使うことが出来ます。
シンボリッククリンクよりも良い方法かと。

 

 

Leave a Comment

メールアドレスが公開されることはありません。