pyenvのインストールと設定-はじめてのAWS


環境

Amazon Linux

依存したライブラリのインストール(追記)

yum install gcc gcc-c++ make git openssl-devel bzip2-devel zlib-devel readline-devel sqlite-devel

pyenvのインストール

$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
Cloning into '/home/ec2-user/.pyenv'...
remote: Counting objects: 10615, done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 10615 (delta 0), reused 0 (delta 0), pack-reused 10608
Receiving objects: 100% (10615/10615), 1.84 MiB | 1.05 MiB/s, done.
Resolving deltas: 100% (7570/7570), done.
Checking connectivity... done.

$ vi ~/.bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

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

$ source ~/.bashrc #.bashrcを読み込む

インストールできるPythonのバージョンを確認

$ pyenv install --list #pyenv install -lでもOK

指定したバージョンのPythonをインストール

3.4.2をインストールする場合。
$ pyenv install 3.4.2
Downloading Python-3.4.2.tgz...
-> https://yyuu.github.io/pythons/44a3c1ef1c7ca3e4fd25242af80ed72da941203cb4ed1a8c1b724d9078965dd8
Installing Python-3.4.2...
Installed Python-3.4.2 to /home/ec2-user/.pyenv/versions/3.4.2

インストールされているバージョンの確認

$ pyenv versions
* system (set by /home/ec2-user/.pyenv/version)
3.4.2

使用するPythonの変更

$ pyenv global 3.4.2
$ python -V
Python 3.4.2

systemのPythonを使用する時

$ pyenv global system
$ python -V
Python 2.7.9

pyenv-pip-rehashのインストール

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

pyenv-virtualenvのインストール

$ git clone git://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv

インストール時のエラー

git cronのコマンドで、「-bash: git: コマンドが見つかりません」というエラーが出た時は、yumで必要なパッケージをインストールする。
$ sudo yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel

pyenvでpythonをインストールしようとした時に、
configure: error: in `/tmp/python-build.20150602070527.23418/Python-3.4.3':
configure: error: no acceptable C compiler found in $PATH

というエラーが出た時は、gccコンパイラが入っていない可能性があるので、
$ sudo yum install gcc
でインストールする。

WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
のWARNINGが出た時は、
$ sudo yum instal bzip2-devel
で、bzip2-develを改めてインストールする。

pyenvを使うメリット

Amazon Linuxの場合、最初からPython 2.7.9がインストールされています。そのため、Python3を使いたい場合、コマンドはPython3 〜〜としなければなりません。
基本的には、問題ないのですが、一部のコマンド(具体的にはpip)のアップグレードをするときに、sudoコマンドでアップグレードすると、pipコマンドの参照先が変化するという問題が発生していました。
Amazon Linuxでpip3は使えるのに、pipが使えなくなったりする現象メモ(解決追記) | kazsoga(曽我一弘)ブログ
この問題がpyenvで解決します。

また、python 3.4.3をインストールするにあたって、コンパイルをする必要がありましたが、pyenvコマンドを使えば、それらも自動的に行ってくれます。

サーバ環境についてあまり手を加えずに、Pythonの様々なバージョンの環境が構築できるのもメリットです。

参考サイト

PyenvをCentOS6.3でセットアップする(超かんたんリファレンス付き) – Qiita
python – pipコマンドでPython2、pip3コマンドでPython3が使われるようにしたい – スタック・オーバーフロー
yyuu/pyenv
pyenvを使ってPythonをインストールする – kzy52’s blog