Python初心者がnumpyとOpenCVをインストールするためにしたこと
はじめに
臨床データを呼吸するように集めていく、というのは僕の一つの目標なのですが、自作のマークシートがあればいろいろと面白いことができないかな?と思っていました。
業者に頼むのが一番手っ取り早かったの、スキャネットさんの担当者さんに来てもらったりして話を聞かせてもらったのですが、1つのマークシートを作成して、読み込めるようにするように20-30万かかってしまうということでした。Readymadeのもので間に合えばもっともっと安く済むのですが、残念ながら難しく、複数のマークシートも必要だったので、自分で作る必要があるかな?と思っておりました。
そんな中、こんなQiitaの記事を見つけてやってみようかな?という気になりました。PythonはQiimeで少しかじったくらいなのでちょっと心配でしたが…Pythonがほとんど入っていない環境に導入するのはなかなか大変でした。とりあえずやったことは
- Python3のインストール
- numpyのインストール
- OpenCVのインストール
になります。
1. Pythonをインストールする
Pythonのversionを確認する
MacであればPythonははじめからインストールされていますが、確認しておきます。
$ python --version Python 2.7.10
どうやらPython2がインストールされているらしいことがわかりました。
Python2とPython3どっちを使うか
Python2系と Python3系の違いとは?どっち学ぶべきか? | ハジプロ!
これから、新しくPythonを学んでいきたい初心者はPython3系を学習していきましょう。当初は、Python2系でなければ、使えないライブラリも多々ありました。現在では、Python2系から3系への周辺のライブラリの移行もすすみ、Python3でも全く問題ありません。Python2系のサポートは2020年で終了する予定になっています。
とあるので、Python3にアップグレードしてみます。
Python3をインストールする
こちらを参考にしてみました。 qiita.com
Homebrew経由でPython3をインストールする
$ brew install python3
を実行すると
Error: The following formula python cannot be installed as binary package and must be built from source. Install the Command Line Tools: xcode-select --install
と怒られてしまう。どうやらxcodeが上手く働いていないことが問題のようなので、おとなしく従ってみる。
Xcodeをインストールし直す
xcode-select --install
そのあとに再度brew経由でインストールするとうまくいく。このサイトではvirtualenv
やpyenv
で環境を分ける方法が推奨されているがとりあえず無視してみる。
エラーへの対処
もしbrew install python3
を実行したときに
Error: An unexpected error occurred during the `brew link` step The formula built, but is not symlinked into /usr/local Permission denied @ dir_s_mkdir - /usr/local/Frameworks
というエラーが出てしまったら、ディレクトリ’を作って権限を与えてあげればいいようです。
sudo mkdir /usr/local/Frameworks sudo chown $(whoami):admin /usr/local/Frameworks
python 3.7.1 is already installed, it's just not linked
しかし、この際に
Warning: python 3.7.2 is already installed, it's just not linked You can use `brew link python` to link this version.
という警告が出ることがありますので、素直に実行すると
$ brew link python Linking /usr/local/Cellar/python/3.7.2... 20 symlinks created
と出るので、そうすれば
$ python3 Python 3.7.2 (default, Dec 27 2018, 07:35:06) [Clang 10.0.0 (clang-1000.11.45.5)] on darwin Type "help", "copyright", "credits" or "license" for more information.
と動いてくれます。
2. numpyをインストールする
numpyとは?
こちらのサイトによると、
numpyは配列(リスト)計算を高速にするためのPythonのライブラリです。Pythonには標準の機能としてリスト型変数がありますが、numpyはこれを強化したnumpy配列というものを扱います。では、numpy配列のどこがPythonのリストよりも優れているのでしょうか?それは、次の3点に尽きます。
1.処理速度が早くなる。 2.配列の扱い方が柔軟。 3.コードがシンプルで綺麗になる。
というような特徴があるようです。
python # Pythonを起動する import numpy as np
これでOKだと思います。ここまでは簡単でした。ここで一度、Pythonを終了さえておく必要があります。Pythonを出てterminalに戻るにはControl+D
で良いようです。
3. OpenCVをインストールする
OpenCVとは?
こちらのサイトによると、OpenCVとは
OpenCV(Open Source Computer Vision Library)は、コンピューターで画像や動画を処理するための機能がまとめて実装されている、オープンソースのライブラリです。
とのことです。
$ pip install opencv-python
最終的にこのスクリプトが動けば良いので、まずはpip
をインストールする必要があります。
pipをインストールする
OpenCVのインストールにはpipが必要なようです。ちなみにpipとはWikipediaによると
pip("Pip Installs Packages" または "Pip Installs Python")はPythonで書かれたパッケージソフトウェアをインストール・管理するためのパッケージ管理システムである。多くのPythonパッケージは、Python Package Index (PyPI) 上にある。
とのことです。インストールする方法はいろいろあるようで、エラーが起こって困ることも多いようですが、最終的にこのQiitaの記事が参考になりました。
$ curl -kL https://bootstrap.pypa.io/get-pip.py | sudo python
このスクリプトを叩くとpipがインストールされると思います。
OpenCVをインストールする
pipもインストールできたので、
$ pip install opencv-python
このスクリプトからpipをインストールしようとしたところ、
matplotlib 1.3.1 requires nose, which is not installed. matplotlib 1.3.1 requires tornado, which is not installed.
と出てきてしまいましたので、大人しく従うことにします。つまりはnose
とtornadao
というパッケージをインストールせいということのようです。
noseとtornadeをインストールする
noseとは?
nose はユニットテスト用のライブラリです。ユニットテストとはプログラムを構成する比較的小さな単位(ユニット)が個々の機能を正しく果たしているかどうかを検証するテストです。
Tornadoとは
Tornadoは、Apache Licence 2.0に基づくオープンソースのノンブロッキングなWebサーバ&Webフレームワークです。TornadoはFriendFeedによって開発され、Facebookに吸収されたのちにオープンソース化されたフレームワークで、以下のような特徴があります。 * ノンブロッキングI/O * リアルタイム性 * シンプルなテンプレート * シングルスレッド、シングルプロセス
ということで、上記のサイトによると、下記でOKのようです。
$ sudo easy_install nose $ sudo easy_install tornado
でnose
とtornado
をインストールしてから、
$ pip install opencv-python
を再び実行したんですけど、今度は
Cannot uninstall 'numpy'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
と怒られてしまいます。どうやらnumpyが上手くアンインストールできないことが問題なようですが。いろいろと試した結果、
こちらの記事を参考にさせてもらい、
$ sudo pip install opencv-python --ignore-installed six
としたところうまくいきました。どうやらsixはpython2系と3系の差異を埋めてくれるユーティリティライブラリのことの’ようです。これでOpenCVもどうにかインストールできたようです。
4. 必要なライブラリがインストールできているか確認する
ライブラリがインストールできているかを確認する際はpip list
というのが使えるようです。
Package Version -------------------------------------- -------- altgraph 0.10.2 backports-abc 0.5 bdist-mpkg 0.5.0 bonjour-py 0.3 futures 3.2.0 macholib 1.5.1 matplotlib 1.3.1 modulegraph 0.10.4 nose 1.3.7 numpy 1.15.4 opencv-python 3.4.4.19 pip 18.1
これでなんとかnumpyとopencvがインストールできていることがわかりました。めでたしめでたし。上手くいくといいなあ。