はじめに
この記事はHamee Advent Calendar 2015の17日目の記事です。
主に自分用の作業メモとしてMacでpythonzとdirenvを使ってPythonの開発環境を構築する手順をまとめてみました。
ここでは、例としてディレクトリ~/dev/myprojectでバージョン3.5.0のPythonを使用するための設定をしていきます。また、bashで環境構築した手順について説明していますので、必要に応じてご自身が使用しているシェルに置き換えてお読みください。
pythonzとは
色々なバージョンのPythonをユーザのホームディレクトリにインストールできるツールです。詳細はこちらをご覧ください。
direnvとは
ディレクトリごとに環境を切り替えるためのツールです。詳細はこちらをご覧ください。
下準備
pythonzとdirenvを使用するために必要なツール・ライブラリ等がいくつか存在するので、事前に以下のインストールを済ませておいてください。
コマンドラインツール
pythonzを使用するためにコマンドラインツールが必要です。
$ xcode-select --install
を実行し、[インストール]を選択してインストールしてください。
homebrew
direnvのインストールにhomebrewを使用するので、
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
を実行してhomebrewをインストールしてください。
virtualenv
direnvを実行するのにvirtualenvというPythonのモジュールが必要なので、
$ sudo pip install virtualenv
を実行してvirtualenvをインストールしてください。もしpipが使用できない場合は、先に
$ sudo easy_install pip
を実行してpipをインストールしてください。
pythonzとdirenvのインストール
pythonzのインストール
$ curl -kL https://raw.github.com/saghul/pythonz/master/pythonz-install | bash
を実行してpythonzをインストールします。(~/.pythonzにインストールされます。)
次に、以下のコマンドを実行して~/.bashrcに必要な設定を追記します。
$ echo '[[ -s $HOME/.pythonz/etc/bashrc ]] && source $HOME/.pythonz/etc/bashrc' >> ~/.bashrc
direnvのインストール
homebrewを使ってdirenvをインストールします。direnvをインストールするには以下のコマンドを実行します。
$ brew install direnv
インストールが完了したら、以下のコマンドを実行して~/.bashrcにhookを追加します。(bash以外のシェルを使用している場合、適宜読み替えてください。)
$ echo 'export EDITOR={使用するエディタ}' >> ~/.bashrc
$ echo 'eval "$(direnv hook bash)"' >> ~/.bashrc
これらの設定を有効にするために
$ source ~/.bashrc
を実行してください。また、もし~/.bash_profileというファイルが存在して
いない場合は、以下の内容の~/.bash_profileを作成してください。
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
環境構築
pythonzで任意のバージョンのPythonをインストール
$ pythonz list --all
を実行すると、pythonzでインストールできるPythonのバージョンの一覧が以下のように表示されます。
# Available Python versions
# cpython:
3.1.3
3.1.2
3.1.5
3.1.4
2.4.3
...
任意のバージョンのPythonをインストールするには
$ pythonz install {インストールしたいバージョン}
を実行してください。バージョン3.5.0のPythonをインストールするには
$ pythonz install 3.5.0
を実行します。(~/.pythonz/pythons/CPython-3.5.0にインストールされます。)
ちなみに、pythonzを使用してインストールされたPythonのバージョン一覧は
$ pythonz list
を実行することで確認できます。(以下のように表示されます。)
# Installed Python versions
CPython-3.5.0
その他の使い方については
$ pythonz help
を実行して確認してみてください。
direnvで環境変数の設定
まず、以下のコマンドを実行してください。
$ direnv edit ~/dev/myproject
するとexport EDITOR={使用するエディタ}で指定したエディタが起動するので、環境変数の設定を書き込みます。先ほどpythonzでインストールしたバージョン3.5.0のPythonをこのディレクトリで使用するには、以下の設定を記述してください。(この設定は~/dev/myproject/.envrcに保存されます。)
layout python $(pythonz locate 3.5.0)
設定が完了したら~/dev/myprojectディレクトリに移動します。すると、環境の初期化が行われるかと思います。もし初期化されずに
direnv: error .envrc is blocked. Run `direnv allow` to approve its content.
のようなメッセージが出力されてしまった場合は
$ direnv allow
を実行することで初期化されるかと思います。
以上で~/dev/myprojectでバージョン3.5.0のPythonを使用するための設定が完了しました。今後は、このディレクトリに移動すればバージョン3.5.0のPythonが使用できます。
ディレクトリごとに使用されるPythonのバージョンを確認
本当に~/dev/myprojectでバージョン3.5.0のPythonが使用できるかを確認してみます。
まずは現在のディレクトリ(~/dev/myproject)で
$ python --version
を実行します。すると
Python 3.5.0
と表示されるかと思います。次に、この設定が現在のディレクトリでのみ有効かどうかを確かめるため他のディレクトリに移動して
$ python --version
を実行してみます。今度は
Python 2.7.10
のように表示され、~/dev/myproject以外のディレクトリではバージョン3.5.0のPythonが使用されていない(システムのPythonが使用されている)ことが確認できるかと思います。
まとめ
pythonzとdirenvを使用して、任意のディレクトリ(~/dev/myproject)で任意のバージョン(3.5.0)のPythonを使用するための設定手順についてまとめました。
このような記事を書くのは初めてなので、至らない点は多々あったかと思います。ですが、この記事が少しでも 社内のPython使いの人口を増やすきっかけになれば 自分以外の誰のお役に立てば幸いです。