pyenv/pyenv-virtualenvで環境を構築する(Linux環境下で)

Pythonを使う為の環境の整備。
開発用に、ディストリビューションの標準のPythonではなくする方法、かつ
ちなみに、ディストリビューションFedora。今の所23(もうじき24)。

pyenvをインストールする。

GitHub - yyuu/pyenv: Simple Python version management

今回は/usr/local/の配下にpyenvを追加する。半ば趣味であるが、まあ、homeの下にフォルダがわさわさ増えてくのが何となく嫌いなだけだったりする。/usr/localの下におくと、いちいちsudo使う事になるが、まあそこら辺はどうでもいいので。
通常はpyenv-installerを用いればよい。

pyenvの/usr/local/の配下に入れる手順。

sudo git clone https://github.com/yyuu/pyenv.git /usr/local/pyenv

これで、/usr/localの配下のpyenvディレクトリとして作成される。

環境変数の設定

PYENV_ROOTに、/usr/local/pyenvを設定する。
PATHに$PYENV_ROOT/binを設定する。


個人の場合などでは、.bash_profileとかに仕込むようだが、今回は/etc/profile.d/配下に、pyenv.shを作成してみる。

#! /usr/bin/bash
#
# function pathmunge
pathmunge () {
    case ":${PATH}:" in
        *:"$1":*)
            ;;
        *)
            if [ "$2" = "after" ] ; then
                PATH=$PATH:$1
            else
                PATH=$1:$PATH
            fi
    esac
}

# Environment Variables for pyenv
export PYENV_ROOT=/usr/local/pyenv
pathmunge $PYENV_ROOT/bin

unset -f pathmunge

pathmunge関数によって二重登録を避けている。あんまり気にする事はない。

pyenv initの実行

以下の一行を追加する。

eval "$(pyenv init -)"
pyenv initの実行に必要なディレクトリの作成

この状態でターミナルを起動すると以下のように表示される。

mkdir: ディレクトリ `/usr/local/pyenv/shims' を作成できません: 許可がありません
mkdir: ディレクトリ `/usr/local/pyenv/versions' を作成できません: 許可がありません

sudoで2つのフォルダを作成する。

pyenv-virtualenvプラグインをインストールする。

GitHub - yyuu/pyenv-virtualenv: a pyenv plugin to manage virtualenv (a.k.a. python-virtualenv)

sudo git clone https://github.com/yyuu/pyenv-virtualenv.git /usr/local/pyenv/plugins/pyenv-virtualenv
pyenv-virtualenvプラグイン用の設定
eval "$(pyenv virtualenv-init -)"

を、先のpyenv initの後に追加する。

pyenvの環境構築で、幾つかはsudoで実行する為に環境変数の設定をしておく。

visudoで以下編集した。

Defaults    env_keep += "PATH"
Defaults    env_keep += "PYENV_ROOT"

pyenv使って環境を作る。

pyenvは複数バージョンをインストール出来る。
pyenv-virtualenvは、そのバージョンの切り分けと似たような「仮想のバージョン」を作るようなイメージ。

pyenvでインストール可能なバージョンを確認する。

pyenv install -l

「-l」は「--list」でも可。

pyenvで特定バージョンをインストールする。

上記で表示された形式でインストールする(二重引用符で囲ってもいいが・・・・・・)

sudo pyenv install "3.5.1"

pyenvで特定バージョンをアンインストールする。

sudo pyenv uninstall "3.5.0"

remove前に確認があるが「sudo pyenv uninstall -f "3.5.0"」で問い合わせなしで削除可能。

pyenvでインストールされたバージョンを確認する。

pyenv versions

virtualenvは、一種のバージョンのように機能するのに注意。

virtualenvを作る。

sudo pyenv virtualenv 3.5.1 py351env

virtualenvを削除する。

バージョン削除と同様に実施する。

sudo pyenv uninstall py351env

利用するバージョンを設定する(全体)

sudo pyenv global py351env

利用するバージョンを設定する(特定ディレクトリ配下)

特定ディレクトリの下で。

pyenv local py351env

現在有効なバージョンを確認する

pyenv version

versions、ではない事に注意。
ちなみに、versionsでもアスタリスクが付いている事で判別がつく。