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