Python 環境セットアップ (書きかけ)

有償であるMatlabが提供する実験環境を、無償でPython+numpy+schipy+matplolib+OpenCVで構築する方法を調べている。ひとまずLinux (Ubuntu/Linux Mint) でのPython環境の構築方法が分かってきたので、Mac上でも似たような環境を構築してみる。おことわりとして、homebrewがインストール済みであるとする。Mac OSXでは初期状態で/usr/local/bin/pythonがインストールされているが、これは使わない。homebrewでインストールする各バージョンのpythonを利用して、バージョンごとのコードを開発するための仮想環境をそれぞれ作成する。仮想環境の作成にはvirtualenvを利用する。pyenvの方がお手軽らしいが、それはそれで・・・。今回は2.7.5と3.3.2のふたつのバージョンに対してそれぞれの開発環境を構築する。

 $ brew update
 $ brew upgrade
 $ brew install gfortran %% scipyのインストールに必要
 $ brew install pkg-config %% matplotlibのインストールに必要
 $ brew install python
 $ brew install python3
 $ sudo easy_install pip
 $ sudo pip install virtualenv
 $ sudo pip install virtualenvwrapper
 $ virtualenv --python=/usr/local/Cellar/python/2.7.5/bin/python2 workspaceP2
 $ virtualenv --python=/usr/local/Cellar/python3/3.3.2/bin/python3 workspaceP3

homebrewでインストールするのはpythonだけで、あとはpython用のパッケージマネージャであるpipを利用する。仮想環境を利用するには、作成したディレクトリ(workspaceP2あるいはworkspaceP3)に入り

 $ source bin/activate

とする。仮想環境を利用している間はpythonあるいはpipとすれば仮想環境ごとのバージョンがコールされる。この方法でpythonを利用するので、環境変数を書き換える必要もない。仮想環境の利用を終了するには

 $ deactivate

とする。


つぎに、各仮想環境に必要なライブラリ等をインストールする。

 $ cd ./workspaceP2/
 $ source bin/activate
 $ pip install numpy %% 数値計算用のコンテナを提供
 $ pip install scipy %% 計算科学用ライブラリ
 $ pip install matplotlib %% プロッター
 $ pip install ipython %% pythonインタラクティブ拡張
 $ pip install sphinx %% 
 $ pip install rope %% エディタ用プラグイン
 $ pip install pyflakes %% リアルタイムコード解析
 $ pip install pylint %% コード解析チェッカ
 $ pip install pep8 %% 構文スタイルチェッカ
 $ pip install psutil %% メモリ/CPU使用率の表示

ところが、numpyインストール後に

InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail.  ....

というwarningが。これを回避するために

$ pip install requests requests[security]

とする。


エディタとしてSublime text3を入れるのもよいし、EclipseっぽいPycharmを使うのもよし。Matlabになれているならば、Matlabライクな環境を提供するSpyderが良さげ。各仮想環境に総合開発環境(IDE)としてSpyderをいれるのなら、以下。

 $ pip install spyder

Spyderは先ほどインストールしたライブラリ全てに依存していることに注意。さらに、SpyderのGUI部分はPyQt4(あるいは代用としてPysideも可)に依存しているので、これもインストールする必要がある。pipではインストールできないので、まずはグローバル環境にPython2.x/3.xの両方で利用できるようにオプションを付けてインストール。

 $ brew install pyqt --with-python3

このときSIPも一緒にインストールされる。次に、各仮想環境のディレクトリにシンボリックリンクを作成する。

 $ cd /workspaceP2/lib/python2.7/site-packages
 $ ln -s /usr/local/lib/python2.7/site-packages/sip.so ./
 $ ln -s /usr/local/lib/python2.7/site-packages/sipconfig.py ./
 $ ln -s /usr/local/lib/python2.7/site-packages/sipdistutils.py ./
 $ ln -s /usr/local/lib/python2.7/site-packages/PyQt4 ./
 $ cd ../
 $ ln -s /usr/local/lib/python3.4/site-packages/sip.so ./
 $ ln -s /usr/local/lib/python3.4/site-packages/sipconfig.py ./
 $ ln -s /usr/local/lib/python3.4/site-packages/sipdistutils.py ./
 $ ln -s /usr/local/lib/python3.4/site-packages/PyQt4 ./

Pythonの各バージョンに適したSpyderを起動するには、仮想環境をactivateした上で

 $ spyder

とすればよい。


Spyderのvirtualenvとあわせた利用方法を日本語で検索したところ、併用を諦めたとかいう記事をちらほらみかけた。英語で検索すれば簡単に欲しい情報がヒットしたので、大学卒業程度の技術者ならすぐに解決できそうなものだが・・・Spyder自体はpipでインストールできたので、PyQt4とvirtualenvとの併用について調べたら一発だった。日本語での記事もある。うちの研究室の学生も、いい加減日本語のみの検索から一歩踏み出した方がよいと思う。


ついでに、OpenCVをインストールしてPythonから使えるようにする。まず、homebrewでOpenCVをインストールする。つぎに、仮想環境のディレクトリにシンボリックリングを作成。バージョンは2.4.xなので、Python3には対応していない。

 $ brew install opencv --with-ffmpeg --with-jasper --with-libdc1394 --with-opengl --with-qt --with-tbb --with-ximea 
 $ cd ./worspaceP2/lib/python2.7/site-packages/
 $ ln -s /usr/local/Cellar/opencv/2.4.12/lib/python2.7/site-packages/cv.py cv.py
 $ ln -s /usr/local/Cellar/opencv/2.4.12/lib/python2.7/site-packages/cv2.so cv2.so.

ちゃんと動くか確認しておわりんこ。

 $ cd ~/python/workspaceP2
 $ source bin/activate
 $ python
 >> import cv
 >> import cv2
 >> exit()

エラーが起きなければおk。


Spyderを使いこなすか決めかねているので、Sublime text3も入れておく。インストールにあたり、homebrewを拡張するhomebrew caskをインストールし、cask経由でSublime text3を入れる。

 $ brew install caskroom/cask/brew-cask
 $ brew tap caskroom/homebrew-versions
 $ brew cask install sublime-text3

下記コマンドで起動して、初期設定を行う。

 $ subl

Preference => Setting-Userを選択して、設定を変更。

{
	//"color_scheme":"Packages/Color Scheme- Default/Twilight.tmTheme",
	"draw_white_space": "all",
	"font_face": "Dejavu Sans Mono",
	"font_size": 14,
	"highlight_line": true,
	"show_encoding": true,
	"show_line_endings": true,
	"translate_tabs_to_spaces": true,
	"tab_size": 4,
	"indent_guide_options":["draw_normal", "draw_active"],
}

Python規約PEP8だとTABの使用は推奨されていないため、pep8コマンドで構文チェックをかけると怒られる。そこで、TABをスペース数文字分にあらかじめ設定しておく。つぎに、Sublime text用のパッケージを管理するパッケージマネージャをいれる。View => Show Consoleを選択し、ここ(https://packagecontrol.io/installation)に書いてある内容をコピペする。




以下、参考にしました。