direnvでpyenvやpipenvを使う

direnvはディレクトリごとに環境を分けるためのユーティリティ。小気味よい感触があって気に入って使っている。

github.com

環境変数を設定するツールだと思っていたが、Pythonのいくつかのユーティリティにも対応していた。 v2.21.0 以降では Python 標準ライブラリの venv モジュール、pyenvpipenv などに対応している。

Python · direnv/direnv Wiki · GitHub

例えば、 pyenv でインストールした Python 3.8.6のランタイムを使用するには .evnrc に次のように書く。

layout pyenv 3.8.6

pipenv も同様に使用できる。 .envrc に次のように書くと Pipfile の内容が自動的に読み込まれる。

layout pipenv

direnv によって作成された Python 仮想環境は .direnv ディレクトリ以下に構築される。ディレクトリに cd すると自動的に activate されて、ディレクトリの外に出ると deactivate される。べんり。