データナード

機械学習と自然言語処理についての備忘録 (旧ナード戦隊データマン)

aws parallel clusterのcompute instanceにpythonパッケージを入れる方法

compute instanceは分散実行させる際に使うノードです。分散実行させるためには、各々のノードに必要なものが入っていなければなりません。どうすればpythonパッケージを入れられるでしょうか。

TL;DR

HOME内でvirtualenvを使え。

概要

master instanceとcompute insntanceは共有のNFSとして$HOMEディレクトリを設定しています。つまり、$HOME内のすべてのファイルは共有されます。

pythonパッケージをインストールする場合、pythonパッケージが$HOME内にあればよい、ということになります。

インストール方法

方法1: virtualenvを使わない方法

virtualenvを使わずに、$HOME内にpythonパッケージを入れる方法は3つあります。これらの全ては、環境変数等の設定を行っておく必要があります。(特にPYTHONPATH)

pipからインストール

pipからインストールする場合、--userオプションを使えばよいです。

pip install --user <packagename>

ソースからインストール

pipからインストールできない場合、setup.pyによるインストールをする必要があります。

python setup.py install --prefix=$HOME/.local

この--prefixオプションによってインストール先を決定することができるため、これをHOME内にします。

easy_installを使う

mkdir -r $HOME/.local/lib/python2.7/site-packages
export PYTHONPATH=$HOME/.local/lib/python2.7/site-packages:$PYTHONPATH
easy_install --prefix=$HOME/.local <packagename>

インストール後

インストール後は、PYTHONPATHにインストールした場所を指定します。

export PYTHONPATH=$HOME/.local/lib/python2.7/site-packages:$PYTHONPATH

slurmの場合は、このexport文をスクリプト内に書けばよいでしょう。

方法2: virtualenvを使う方法

$HOME内にvirtualenvを生成すれば、それをcompute instanceと共有できます。

virtualenv <venv_dir>
. ./<venv_dir>/bin/activate
pip install <python_package>

参考

  1. FAQ: How do I install Python packages? - HPC @ Uni.lu