2015.11.06   |   Python

direnvがPythonの環境切り替えに便利!

Pythonで開発するときはいつもvirtualenvwrapperで環境を作って都度workonをして切り替えていたのですが、direnvという便利なものがあるということを教えてもらいました。

direnvとは

コマンドラインツールの一種です。特定のディレクトリに入った事をトリガーに環境を切り替えることが出来ます。使いみちとしてはPythonのvirtualenv環境やexportの変数定義あたりに利用でき、ディレクトリ毎に異なった設定をいちいちタイプせず自動で切り替えることが出来ます。

インストール(Mac)

brew install direnv

でdirenvをインストールした後 .bashrc などに

# direnv
eval "$(direnv hook bash)"

を追記して読み込み直します。

使い方

環境を作りたいディレクトリのルートで

direnv edit .

を実行するとエディタが立ち上がります。
ここに設定したい環境設定(後述)を入力します。

保存するとdirenvが走り環境がセットされます。

ディレクトリをみてみると .envrc というファイルが作られています。
これを直接編集してもいいですが、編集後 direnv allowを叩く必要があるのでdirenv editを利用したほうが良さそうです(2回目以降は末尾のドットが不要)。

環境をセットする

PythonのVirtualenv

Python3で新たにvirtualenv環境を作るには

layout python3

と書き込むだけです。Python2であれば layout python 。これを保存すると新規にvirtualenvが作成され、自動でactivateされます。ディレクトリを抜ければデフォルトのPythonに戻りますし、再び入ればまたactivateされます。 かなり便利ですね。

尚 Pythonの実行ファイルは.direnv内に作成されます。直にいじったりPathを指定したいときはこちらを。

環境変数

環境変数も次のようにセットすることもできます

export DEBUG=1
export HOGEHOGE_PATH=/hogehoge

shellに書くような感じで環境変数をセットできます。というよりdirenvの設定ファイル内にshellコマンドを書けばディレクトリに入った時に自動で走るみたいですね。 応用すればいろいろ出来そうです。 exportの場合、後処理もちゃんとやってくれて、ディレクトリから抜けるとここでセットした環境変数もクリアしてくれます。

これに慣れてしまうと元に戻れませんね。非常に便利なので是非活用してみてください。