自然な言語を目指して

技術・日常をぐだぐだと

管理者権限がないサーバー上で、python+pip+pyenvを使いたい

管理者権限を持っていないサーバーを初めて扱い、pipが使えない問題で四苦八苦したので、備忘録を載せます。

まず、pipは通常、管理者権限を必要とする場所にライブラリを保存します。
しかし、管理者権限がないパソコンだったり、サーバーだったりすると、pipコマンドが使えないわけです。つまり、ライブラリが使えない。これは困った。

というわけで、解決方法を考えます。

解決案1 pipの設定自体を変更して、インストール先を変更する


軽く試してみたけど、pipのバージョンによって、コマンドが違ったりして結構面倒。

解決案2 pyenvを使って、python自体の(pipのインストール先も)保存先を変更する


これが楽でした。 pyenvを使って、python自体をサーバー接続先のデフォルトフォルダ(つまり、管理者権限が要らない場所)に保存してしまえば、pipもそのまま使える。

やりかた


手順1. pyenvのインストール
まずは、pyenvをインストールする。
デフォルトの~/.pyenvに保存するように設定する。(保存できればどこでもいいけど)
ちなみにpyenv-pip-rehashを入れると、rehashが自動で行われるので、入れておく(2行目)

$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
$ git clone https://github.com/yyuu/pyenv-pip-rehash.git ~/.pyenv/plugins/pyenv-pip-rehash

手順2. ターミナルの設定ファイルに記述
まずは、自分が何のシェルを使っているか把握する

$ echo $SHELL
/bin/bash

このコマンドでどのシェルを使っているか、把握できる。 今回はbashだったので、.bashrcに記述。

#pyenv settings
export PYENV_ROOT="${HOME}/.pyenv"
if [ -d "${PYENV_ROOT}" ]; then
   export PATH=${PYENV_ROOT}/bin:$PATH
   eval "$(pyenv init -)"
fi

しかし、ここで問題発生。
どうやら、今回のサーバーは.bashrcを自動的に読み込まない設定になっていたみたい。

なので、.bash_profile.bashrcを読み込む設定を記述する。

if [ -f ~/.bashrc ] ; then
. ~/.bashrc
fi

これで、.bashrcを自動で読み込んでくれるようになる。
ちなみに、.bashrc.bash_profileの使い分けはググって、覚えておくと便利でしょう。

手順3. pythonをインストール
後は、pyenvを通常通りに使うだけです。
今回の例ではpyenvに2.7.9をインストールしてみましょう。

$ pyenv install 2.7.9

でインストール。

$ pyenv versions

で現在使っているバージョンとインストールされているバージョンを確認できる。

あとは、ローカルだったり、グローバルだったり、お好みにpythonのバージョンの設定を行うだけ。

今回は全てのディレクトリにおいて、2.7.9を使うようにします。

$ pyenv global 2.7.9

でOK。

あとは、通常通りpip install numpyとかでライブラリをインストール出来る。

参考URL

pyenvを使ってPython環境を構築