このページを正しく表示するにはJavascriptを有効にしてください。
direnvがPythonの環境切り替えに便利!
Pythonで開発するときはいつもvirtualenvwrapperで環境を作って都度workonをして切り替えていたのですが、direnvという便利なものがあるということを教えてもらいました。
## direnvとは
コマンドラインツールの一種です。特定のディレクトリに入った事をトリガーに環境を切り替えることが出来ます。使いみちとしてはPythonのvirtualenv環境やexportの変数定義あたりに利用でき、ディレクトリ毎に異なった設定をいちいちタイプせず自動で切り替えることが出来ます。
## インストール(Mac)
```shell
brew install direnv
```
でdirenvをインストールした後 .bashrc などに
```shell
# direnv
eval "$(direnv hook bash)"
```
を追記して読み込み直します。
## 使い方
環境を作りたいディレクトリのルートで
```shell
direnv edit .
```
を実行するとエディタが立ち上がります。
ここに設定したい環境設定(後述)を入力します。
保存するとdirenvが走り環境がセットされます。
ディレクトリをみてみると .envrc というファイルが作られています。
これを直接編集してもいいですが、編集後 ```direnv allow```を叩く必要があるのでdirenv editを利用したほうが良さそうです(2回目以降は末尾のドットが不要)。
## 環境をセットする
### PythonのVirtualenv
Python3で新たにvirtualenv環境を作るには
```shell
layout python3
```
と書き込むだけです。Python2であれば ```layout python``` 。これを保存すると新規にvirtualenvが作成され、自動でactivateされます。ディレクトリを抜ければデフォルトのPythonに戻りますし、再び入ればまたactivateされます。 かなり便利ですね。
尚 Pythonの実行ファイルは.direnv内に作成されます。直にいじったりPathを指定したいときはこちらを。
### 環境変数
環境変数も次のようにセットすることもできます
```shell
export DEBUG=1
export HOGEHOGE_PATH=/hogehoge
```
shellに書くような感じで環境変数をセットできます。というよりdirenvの設定ファイル内にshellコマンドを書けばディレクトリに入った時に自動で走るみたいですね。 応用すればいろいろ出来そうです。 exportの場合、後処理もちゃんとやってくれて、ディレクトリから抜けるとここでセットした環境変数もクリアしてくれます。
これに慣れてしまうと元に戻れませんね。非常に便利なので是非活用してみてください。