個別Python環境を整えるpyenvのススメ

スポンサーリンク

Linux上でPythonでアプリケーション構築する際、Python moduleをインストールしたりPythonバージョンをSystemのバージョンとは異なるものにしたいことがしばしばあります。 System環境のPythonはデフォルトでインストールされていることもあり、色んなところで使われてたりします。
そのため、System環境を汚さずPython環境を整える必要があります。

そんな時はpyenvでPython環境を整えましょう。
pyenvを使うことにより、個別ユーザーごとにPython moduleをインストールすることができるため、System環境のPythonを汚すことなくPython環境を整えることができます。

今回はpyenvをLinuxにインストールする具体的な手順を紹介します。
今回使用したOSはCentOS Linux release 7.3.1611 (Core)になります。

個別ユーザに設定

まずは必要なソフトウェアをgitで持ってきます。
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv

次にログインした際に自動的に環境をLoadするようにします。
以下を.bash_profileに追記します。

export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"

sourceコマンドで.bash_profileをLoadします。

source .bash_profile

これでpyenvの環境を整えるのは完了しました。それでは現在のpythonのバージョンを確認してみましょう。

$ pyenv version
system (set by /home/testuser01/.pyenv/version)

上記の場合はsystemで利用されているPythonが利用されているということですね。

pyenv install X.X.Xでバージョンを指定してPythonをインストールすることができます。

$ pyenv install 3.6.2
Downloading Python-3.6.2.tar.xz...
-> https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
Installing Python-3.6.2...
Installed Python-3.6.2 to /home/testuser01/.pyenv/versions/3.6.2

インストールしたPythonはpyenv global 3.6.2でデフォルトで使用するバージョンを指定できます。

$ pyenv global 3.6.2
$ pyenv version
3.6.2 (set by /home/testuser01/.pyenv/version)

ユーザー追加時に自動で設定

skelに登録することで、新たに作成するユーザーのpython環境を自動で整えることができます。

git clone https://github.com/yyuu/pyenv.git /etc/skel/.pyenv
git clone https://github.com/yyuu/pyenv-virtualenv.git /etc/skel/.pyenv/plugins/pyenv-virtualenv

以下を/etc/skel/.bash_profileに追記します。

export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"

まとめ

サーバ仮想化だけでなくPython環境も仮想的に便利に使える時代になりました。

検証時とか様々な用途で使えると思うので是非参考にしてください。