Python venv環境設定

Pythonのvenv環境を作るには以下のようにpython3.6 -m venv <venv_dir_name>としたあとにsource <venv_dir_name>/bin/activateすればいい。

$ python -V
Python 2.7.5
$ which python
/bin/python

$ cd project_directory
$ python3.6 -m venv venv
$ ls
venv
$ source venv/bin/activate

$ python -V
Python 3.6.5
$ which python
/full_path_to_project_directory/venv/bin/python

venv環境から出るためには、deactivateとターミナルに打つ。

direnvによるvenv activateの自動化

python3.6 -m venv <venv_dir_name>をするのは環境を作る初回だけだが、source <venv_dir_name>/bin/activateはvenv環境に入るたびに実行しなければならず、実行し忘れ等のミスを誘発してしまう。またvenv環境から出るためのdeactivateも手動のため実行し忘れてしまう可能性がある。

direnvというディレクトリを移動したタイミングで環境変数の設定および削除を行ってくれるツールを併用することで、venv環境のactivate, deactivateを自動化する。

direnvのinstall方法

direnvはGoで作られているので、ワンバイナリで落としてくるのが一番簡単なinstall方法。

$ wget https://github.com/direnv/direnv/releases/download/v2.17.0/direnv.linux-amd64 -O direnv
$ chmod a+x direnv
$ mv direnv /usr/local/bin/

direnvはログイン時に.bashrcで有効化する必要がある。

$ echo 'export EDITOR=vim' >> ~/.bashrc
$ echo 'eval "$(direnv hook bash)"' >> ~/.bashrc
$ source ~/.bashrc

direnvの使用方法

目的のディレクトリに.envrcファイルを作成し、その中で環境変数の設定を行う必要がある。direnv edit ..envrcの編集が行える。

.envrcをdirenvを通さず直接編集することもできるが、その場合はdirenv allowを実行するまで.envrcは有効にならない。

$ echo 'source venv/bin/activate' > .envrc
$ direnv allow

.envrcの設定が終わった後は、目的のディレクトリに移動すると自動でvenv環境に入る。ディレクトリから出ると自動で環境変数がクリアされ、結果的にdeactivateと同じになる。

% cd project_directory/
direnv: loading .envrc
direnv: export +VIRTUAL_ENV ~PATH
$ cd ../
direnv: unloading

手順まとめ

最後にdirenvを使ったvenv環境の構築手順をまとめる。

$ wget https://github.com/direnv/direnv/releases/download/v2.17.0/direnv.linux-amd64 -O direnv
$ chmod a+x direnv
$ mv direnv /usr/local/bin/

$ echo 'export EDITOR=vim' >> ~/.bashrc
$ echo 'eval "$(direnv hook bash)"' >> ~/.bashrc
$ source ~/.bashrc

$ cd project_directory
$ python3.6 -m venv venv

$ echo 'source venv/bin/activate' > .envrc
$ direnv allow

$ pip install --upgrade pip