pyenvとvirtualenvを使用してPythonの開発環境を構築する
今回は pyenv と virtualenv で Python の開発環境を構築する方法について説明します。pyenv と virtualenv を使うことで、複数の Python のバージョンを共存させたり、環境ごとにパッケージを管理したりすることができます。
pyenv とは
pyenv は複数の Python のバージョンを簡単に切り替えることができるライブラリです。Python では Python 2.x 系 と Python 3.x 系 の2つの系統が主流として使われています。3.x 系は後方互換がなく、2.x 系のプログラムは動作しない可能性があります。
しかし、プロジェクトによっては異なるバージョンを扱わなければならない場合があります。このような場合に役立つのが pyenv です。
pyenv のインストール
Max OS X の場合は Homebrew を使ってインストールすることができます。ターミナルで以下のコマンドを実行してください。
$ brew update $ brew install pyenv
Linux 系や Mac で Homebrew を使用できない場合は、 curl コマンドを使ってインスールします。brew でインストールした場合は、こちらのコマンドを実行する必要はありません。
$ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
インストールが完了したら、 以下コマンドを実行してください。
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile $ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile $ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile $ exec $SHELL -l
pyenv コマンドが使用できるようになっているか確認します。
$ which pyenv /Users/username/.pyenv/bin/pyenv
これで pyenv のインストールは完了です。
pyenv に Python をインストール
早速 pyenv に Python をインストールしてみます。今回は例として Python 3.5.1 と Python 2.7.11 をインストールします。インストールには少し時間がかかるかもしれません。
$ pyenv install 3.5.1 $ pyenv install 2.7.11
インストールが完了したら、使用する Python のバージョンを pyenv global コマンドで指定します。
$ pyenv global 3.5.1
これで Python 3.5.1 が使用できるようになりました。
$ python -V python 3.5.1
バージョンを確認してみると指定した Python のバージョンが表示されていることが確認できます。 pyenv global で簡単に別のバージョンを切り替えることができます。
$ pyenv global 2.7.11 $ python 2.7.11
pyenv global コマンドの場合は、すべてのディレクトリで指定した Python のバージョンが有効になります。pyenv local を使うことでディレクトリごとに使用する Python のバージョンを切り替えることができます。
$ mkdir python3 $ cd python3 $ pyenv local 3.5.1
上のコマンドを実行すると python3 ディレクトリ内でのみ Python 3.5.1 が有効になります。このディレクトリ以外は global で指定したバージョンが自動的に有効になります。
インストールした Python を調べる場合は、pyenv version コマンドを使用してください。
$ pyenv versions system 2.7.11 * 3.5.1 (set by /Users/username/python3/.python-version)
virtualenv
pyenv だけでも非常に便利ですが、virtualenv を使うことで Python の環境(仮想環境)を作成することができ、より柔軟に環境の切り替えができるようになります。
pyenv を使用する場合、 pip install などで導入したパッケージは Python のバージョンごとに管理されます。virtualenv を使うことで、 新たに環境を作成でき、同じ Python のバージョンでも別々のパッケージを使用することができます。
virtualenv のインストール
Max OS X の場合は Homebrew を使ってインストールすることができます。ターミナルで以下のコマンドを実行してください。
$ brew update $ brew install pyenv-virtualenv
Linux 系や Mac で Homebrew を使用できない場合は、 GitHub からインストールします。brew でインストールした場合は、こちらのコマンドを実行する必要はありません。
$ git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
インストールが完了したら、 以下コマンドを実行してください。
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile $ exec $SHELL -l
これで virtualenv のインストールは完了です。
virtualenv で Python の仮想環境を構築する
pyenv virtualenv コマンドで Python のバージョンと環境名(環境のディレクトリ名)を指定します。今回は例として2つの仮想環境を作ってみます。
$ pyenv virtualenv 3.5.1 projectA $ pyenv virtualenv 3.5.1 projectB
このコマンドを実行すると ~/.pyenv/versions/projectA, ~/.pyenv/versions/projectB というディレクトリが作成され、pyenv の環境として指定できるようになります。
Python の環境を projectA に切り替えて pip でパッケージをインストールしてみましょう。
$ pyenv local projectA $ pip install --upgrade pip $ pip install requests $ pip list pip (8.1.2) requests (2.10.0) setuptools (18.2)
別の環境に切り替えてインストールされているパッケージ一覧を確認してみます。
$ pyenv local projectB $ pip list pip (8.1.2) setuptools (18.2)
先ほど projectA の環境でインストールした requests パッケージが見つかりません。このように、virtualenv を使うことで同じバージョンの Python でもパッケージ管理ができるようになりました。
最後に、 作成した Python 環境の削除は pyenv uninsall コマンドを使用します。
$ pyenv uninstall projectA $ pyenv uninstall projectB
まとめ
python のプログラムはバージョンによって動作しない可能性があります。pyenv とvirtualenv を使用すればこのような問題にも柔軟に対応することができます。