ステージ1: 環境構築 (データマイニング班)
目次- 想定環境
- Python 3.x のインストール
- Python 仮想環境構築用ツールのインストール
- virtualenvwrapper を使った環境構築
- Mercurial の設定
- Python 開発環境の設定
- 単体テストツール pytest の導入
興味があれば tox(複数のPython仮想環境に対してテスト) も試してみよう。
- emacs elisp (for emacs user)
vimな人は似たようなプラグイン(neocomplacacheというのがあるらしい)を探して入れてみよう。少なくとも(a)自動補完機能は自前で追加すること、(b)Pythonスクリプト編集時のインデントは4スペースに設定すること。プログラミングには少なくともインデントや自動補完に対応できるエディタが必要でしょう。atton先生資料: shebang と Vim のプラグイン
- 以下は後日利用。
- 自然言語処理用パッケージのインストール
- (Python追加) NLTK, prettyprintのインストール
- 最終的な環境
- 環境構築前の想定環境
- OS: Mac OS X 10.9.x 以降 (10.7.x以降であれば同じ方法で問題無いはず?)
- Xcode: 7.0.x (最新にアップデートしよう)
- Python: 2.7.x
- Mercurial: 3.4.2 (2.8以降なら多分OK)
- MacPorts: 2.3.1 (2014-10-05時点)
主に自然言語処理用ライブラリ(mecab + 辞書naist-jdic-utf8)のインストールのために利用。関連パッケージ込みで400MB程度。homebrew等でも構わない。
- Python 3.x のインストール
- Python本家サイトからMac OS X用の最新パッケージをダウンロードし、インストール。2015/10/5時点では Python 3.5.0 が最新だが、ライブラリインストール時にこけるので3.4系列の最終版3.4.3を入れよう。
- 動作確認。
rehash which python3.4 # /usr/local/bin/python3.4 *下記本体へのリンク # or # /Library/Frameworks/Python.framework/Versions/3.4/bin/python3.4 /usr/local/bin/python3.4 --version # Python 3.4.3
- Python仮想環境構築用ツールのインストール
- virtualenvの最新版ソースをダウンロード。
- 以下の通り展開+ビルドしてインストール。
tar xvfz virtualenv-13.1.2.tar.gz cd virtualenv-13.1.2 python setup.py build sudo python setup.py install
- virtualenvの動作確認。
virtualenv --version # 13.1.2
- virtualenvwrapperのインストール。
sudo pip install virtualenvwrapper # pip がない場合は「sudo easy_install pip」でインストール。
- virtualenvwrapper.shがインストールされた場所を確認。
which virtualenvwrapper.sh
- virtualenvwrapperを使うための設定を、ログインシェルの設定ファイル(zshなら~/.zshrc)に追加。virtualenvwrapper.shへのパスは前述で調べた通りにすること。
### virtualenvwrappter # 下記if文で指定した WORKON_HOME に仮想環境が構築される。 # 不要になったらここを削除しよう。 if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh fi
- virtualenvwrapperを使った環境構築。以下の例では新たにインストールした Python 3.4.x 系列の仮想環境のみを構築していく。
- 仮想環境構築前のデフォルトpythonバージョンを確認。
python -V # 2.7.x
- Python 3.5 を指定して「py35」という名前の仮想環境を用意する。
mkvirtualenv --python=/usr/local/bin/python3.4 py34 # python3.5 がパスに含まれていない(whichコマンドで見つからない) # 場合には、ログインシェルでPATHを設定すること。
- mkvirtualenvが正常終了すると、プロンプトに指定した名前が追加される。この状態でpythonのバージョンを確認してみる。
python -V # 3.5.x <-- 指定したバージョンに変わっていたらOK。
- 通常の環境(デフォルト)に戻る。
deactive # プロンプトが通常に戻る。
- 構築した仮想環境一覧を確認する。
workon # py35 (複数構築してたら複数表示される)
- 指定した仮想環境内での設定を続ける。ここでは numpy, scipy, matplotlib, scikit-learn をインストール。
workon py35 pip install -U numpy scipy matplotlib scikit-learn # 仮想環境先を ~/.virtualenvs/ に指定しているなら sudo 無しでインストール可能。
- インストール後のpython関連ライブラリを確認。
pip freeze # matplotlib==1.4.3 # nose==1.3.7 # numpy==1.9.3 # pyparsing==2.0.3 # python-dateutil==2.4.2 # pytz==2015.6 # scikit-learn==0.16.1 # scipy==0.16.0 # six==1.9.0 # wheel==0.24.0
- scikit-learnの動作確認。
# The Iris Datasetにある # plot_iris_dataset.py をダウンロード or コピー作成。 python plot_iris_dataset.py # 実行後に2つのグラフが生成されればOK。
- 仮想環境構築前のデフォルトpythonバージョンを確認。
- Mercurialの設定(既に.hgrc設定している人は不要)
- エンコーディングの設定。(~/.zshrc に下記を追加)
export HGENCODING=UTF-8
- エディタの設定。(~/.zshrc に下記を追加。vim好きな人はvimでok)
EDITOR=emacs
- ~/.hgrcのサンプル: hgrc-sample
- 上記サンプルをダウンロードし、usernameを自分用に修正。
- 編集したファイルを ~/.hgrc としてファイル名を変更し、ホームディレクトリに保存。
- ~/.hgignoreのサンプル: hgignore-sample
emacsで編集するとデフォルトで作成される「更新前のファイル(*.~)」等、hgでバージョン管理する際には不要なファイルを除外するための設定を書いた例。そのまま利用するなら、ダウンロードしたファイルを ~/.hgignore として保存してください。
- エンコーディングの設定。(~/.zshrc に下記を追加)
- Python開発環境の設定
- 環境変数PYTHONSTARTUPの設定(~/.zshrc)
export PYTHONSTARTUP=~/.pystartup # 設定終了後にsourceコマンドで設定を反映させること。
- ~/.pystartupの設定例: pystartup-sample
wget http://ie.u-ryukyu.ac.jp/~tnal/2015/info4/dm/pystartup.sample mv pystartup.sample ~/.pystartup
- Pythonスクリプトを書く際のお約束
#!/usr/bin/env python3 # -*- coding: utf-8 -*-
- 好みに応じて Eclipse + PyDev。(デバッグ便利)
- 環境変数PYTHONSTARTUPの設定(~/.zshrc)
- 単体テストツールの導入。
- Pytestのインストール。
pip install pytest
- 動作確認。
py.test --version # This is pytest version 2.6.2 (略)
- 初めてのテスト実行。リンク先の通り test_sample.py を作成し、py.test を使ってテストさせてみよう。
py.test # (確認1) assert について AssertionError が返って来たら正常動作。 # (確認2) 関数 func() が正しく記述されてると仮定し、テストをそちらにあわせて修正し、テストしてみよう。
- 関連URL
- Pytestのインストール。
- emacs elisp(elispインストール支援, 自動補完)のインストール。(vimな人は似たようなプラグインを探して入れてみよう。Aptana Studioな人は必要ありません。プログラミングには少なくともインデントや自動補完に対応できるエディタが必要でしょう。)
- elisp を保存するためのディレクトリを用意。
mkdir ~/.emacs.d/elisp
- elisp のインストールを支援するツール auto-install.el をインストール。「begin」や「end」はエディタで編集追加する範囲を明記しているだけで、begin/end行そのものを追加する必要はありません。
cd ~/.emacs.d/elisp/ wget http://www.emacswiki.org/emacs/download/auto-install.el emacs ~/.emacs ====begin==== ;;; emacs lisp を保存しているディレクトリの設定 (setq load-path (cons "~/.emacs.d/elisp" load-path)) ;;; auto-install.el 用の設定 (require 'auto-install) (setq auto-install-directory "~/.emacs.d/elisp/") (auto-install-update-emacswiki-package-name t) (auto-install-compatibility-setup) ; 互換性確保 ====end==== # *auto-install.el は、emacs起動時に毎回 emacswiki にアクセスしようとするので、 # 通常作業時は邪魔だと感じるなら普段はコメントアウトしておき、 # auto-install を使いたい時だけコメントを外すようにすると良いでしょう。
- auto-install.el を利用して、自動補完ツール auto-complete.el をインストールする。
emacs ====begin==== Esc-x, install-elisp-from-emacswiki [リターンキー] # 頭の[Esc-x]は「Escを一度押して、離してからxを入力」する動作。 # その後 [M-x] と切り替わるはずなので、install以降を入力してください。 auto-complete.el [リターンキー] *後は画面下の指示通りに進め、インストール確認になったら C-c, C-c。 ====end====
- auto-complete.el をデフォルトで起動するようにする。
emacs ~/.emacs ====begin==== ;;; auto-complete.el 用の設定 (require 'auto-complete) (global-auto-complete-mode t) ====end====
- 適当なファイルを開いて auto-complete.el の動作確認。
# 例えば、test.py という空のpythonスクリプトを作成し、 # import sys # を入力する。その後、もう一度"i"だけ入力した時点で # 「iから始まるキーワード一覧」が候補として示されれたらOK。
- org-babelの設定を流用し、Pythomスクリプト(.py)編集中のインデント設定(インデントを半角スペース4つに設定)。
emacs ~/.emacs ====begin==== (setq load-path (cons "/usr/local/share/emacs/site-lisp" load-path)) (require 'org-install) (org-babel-do-load-languages 'org-babel-load-languages '((R . t) (ruby . t) (python . t) (sh . t) (dot . t) (emacs-lisp . nil) )) ====end====
以下は後日利用。実験ではサンプルスクリプトを見せるぐらいで、必須ではありません。
- 10/5時点で動作確認もしていません。
- elisp を保存するためのディレクトリを用意。
- 自然言語処理用パッケージのインストール
- MacPortsのインストール
- 環境変数PATH,MANPATHの設定(~/.zshrc)
export PATH=/opt/local/bin:/opt/local/sbin:$PATH export MANPATH=/opt/local/man:$MANPATH
- MacPortsの動作確認
port -v # 既にインストール済みで、 # バージョンが古い場合には最新版に更新すること(selfupdate)。 sudo port selfupdate
- MeCab(形態素解析器)と辞書のインストール
sudo port install mecab sudo port install mecab-naist-jdic-utf8 # このままだと /opt/local/lib/mecab/dic/ がeuc参照してるので変更。 cd /opt/local/lib/mecab/dic/ sudo ln -snf naist-jdic-utf8 sysdic
- MeCabの動作確認
mecab # 適当に日本語テキストを入力してみる # mecabコマンドを実行すると入力待ちになるため、 # 適当に日本語テキストを入力してから改行すると解析結果が出力される。 # このとき文字化けしなければOK。
- mecab-python(Pythonバインディング)をインストール
# mecab-python 最新版(mecab-python-0.996.tar.gz)をダウンロード。 # (workon py34 した状態で) tar xvfz mecab-python-0.996.tar.gz cd mecab-python-0.996
- setup.py の書式が python 2.x 形式でそのままだとビルドできないため、setup.py を以下のように編集。参考: Python3でMeCab
# 元の記述 def cmd2(str): return string.split (cmd1(str)) # 変更後 def cmd2(str): return cmd1(str).split()
- setup.pyを上記の通り編集し終えたら、2つの環境変数を設定してからビルドし、インストール。
export CFLAGS=-Qunused-arguments export CPPFLAGS=-Qunused-arguments python setup.py build sudo python setup.py install
- pythonを起動してインタラクティブ・モードでmecab-pythonの動作確認
import MeCab mecab = MeCab.Tagger('-Ochasen') sent = "日本語を適当に入力してみる" print(mecab.parse(sent)) # 解析結果が文字化けせずに出力されるならOK。
- (Python追加) NLTKのインストール、動作確認。
# (workon py34 内で) sudo pip install nltk python >>> import nltk >>> nltk.__version__ '3.0.0'
- OS: Mac OS X 10.9.x
- Python: 3.4.3
- Mercurial: 2.8.x or later
- Numpy: 1.9.3
- Scipy: 0.16.0
- matplotlib: 1.4.3
- scikit-learn: 0.16.1
- (NLTK: 3.0.0)